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));
答案 0 :(得分:2)
Matlab中的数组存储在连续的内存块中。您可能内存不足,因为您的计算机没有足够大的内存块来存储整个矩阵。
你需要:
如果您不打算填充整个矩阵,请尝试使用sparse matrix
根据@Dennis Jaheruddin的建议缩小其大小
如果您计划填充矩阵,请考虑将其拆分为单元格。
zeroMat = zeros( size(tmp,1), size(tmp,2) );
daysH = repmat( {zeroMat}, [length(fname), 1] );
对于大小为size(tmp,1) x size(tmp2)
的矩阵,每个单独的单元仍然需要足够的内存。除非这些数字很大,否则你应该没问题。