fname = dir('*sir');
[tmp, head] = loadsir(fname(1).name);
dayH = zeros(length(fname),size(tmp,1),size(tmp,2));
% use temporary array to simplify 3d array creation
for i=1:1
tmp = loadsir(fname(i).name);
dayH(i,:,:) = tmp;
end
我上面有这段代码,但我得到的只是:
Error using zeros
Out of memory
Error in dataAnalysis (line 4)
dayH = zeros(length(fname),size(tmp,1),size(tmp,2));
最佳答案
Matlab 中的数组存储在连续的内存块中。您可能会耗尽内存,因为您的计算机没有足够大的连续内存块来存储整个矩阵。
您需要:
- 减小矩阵的大小,或
- 使用允许内存以不连续 block 的形式保存的变量类型。
如果您不打算填充整个矩阵,请尝试按照 @Dennis Jaheruddin 的建议使用稀疏矩阵
来减小其大小
如果您打算填充矩阵,请考虑将其拆分为单元格。
zeroMat = zeros( size(tmp,1), size(tmp,2) );
daysH = repmat( {zeroMat}, [length(fname), 1] );
每个单元格仍需要足够的内存来存储大小为 size(tmp,1) x size(tmp2)
的矩阵。除非这些数字很大,否则应该没问题。
关于Matlab "Out of Memory"解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13466770/