Pre-allocate memory to zeros or NaN?
42 次查看(过去 30 天)
显示 更早的评论
I'm dealing with large matrix size in a for loop and I currently pre-allocate the matrix to zeros before the for loop, however, this causes me some problems with some math equations I must apply on the matrix. So my question is, does pre-allocating the memory to a NaN matrix recommended? or does MATLAB not like that?
Update for clarification:
Example:
a=zeros(5,5)
for j=1:4:5
v=j;
a(:,j)=v+10;
end
So the problem is if I want to do any calculation with the rows, I will end up including rows 2,3,4 which are now 0, this messes up with my calculations. So I want to explore the option of creating a NaN matrix and using 'omitnan' in my calculations.
2 个评论
KSSV
2021-8-5
It depends on what numbers you are going to fill into matrix. If you fill with zeros what problem it is causing? First what for the loop is?
采纳的回答
Chunru
2021-8-5
编辑:Chunru
2021-8-5
If you have skipped some data and want to omit those data later on, then the preallocation with nan is a better options. Especially if you want to use some matlab built in functions (such as mean, std), options are available to omit nans. NaN is the part of IEEE arithmetic representation, it should not have side effect on preallocatio. The only side-effect is when performing calculation (NaN+2=Nan), but you are prepared to ignore NaNs.
更多回答(1 个)
Sulaymon Eshkabilov
2021-8-5
Of course, you can do memory allocation with nan() as well alike zeros(), e.g.:
k=10; m=15;
M = nan(k, m);
...
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!