2
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));
4

1 に答える 1

2

Matlabの配列は、メモリの連続したチャンクに格納されます。コンピュータには、マトリックス全体を格納するのに十分な大きさの連続したメモリブロックがないため、メモリが不足している可能性があります。

必要がある:

  1. 行列のサイズを小さくする、または
  2. メモリを不連続なチャンクに保存できるようにする変数タイプを使用します。

マトリックス全体にデータを入力する予定がない場合はsparse matrix、@DennisJaheruddinの提案に従ってサイズを小さくしてみてください。

マトリックスを埋める予定がある場合は、それをセルに分割することを検討してください。

zeroMat = zeros( size(tmp,1), size(tmp,2) );
daysH = repmat( {zeroMat}, [length(fname), 1] );

個々のセルには、サイズの行列に十分なメモリが必要ですsize(tmp,1) x size(tmp2)。これらの数が膨大でない限り、おそらく問題ないはずです。

于 2012-11-20T14:20:23.437 に答える