MATLAB Answers

Matlab out of memory when use index to access an element of an array

1 ビュー (過去 30 日間)
Young
Young 2012 年 12 月 6 日
Here is my code:
rows = zeros(round(a large number),1);
cols = rows;
vals = rows;
.....(calculation)
rows(idx) = (i-1)*p + j;
cols(idx) = col;
vals(idx) = d;
Here, idx, pj, col, d are four arrays of the same size. The first indexing line (rows(idx) = (i-1)*p + j;) gets no problem. But when excuting the next line, it comes the problem "out of memory".
I set a breakpoint and debug here. After excuting "rows(idx) = (i-1)*p + j;", i tried "cols(1)=1", it also got the out of memory problem. Could someone pleas explain this problem to me? Thanks a lot!

  0 件のコメント

サインイン to comment.

採用された回答

Matt Fig
Matt Fig 2012 年 12 月 6 日
編集済み: Matt Fig 2012 年 12 月 6 日
You are probably seeing copy-on-write behavior. When you first assign the value of rows to cols, MATLAB doesn't actually create cols, but rather a pointer to rows. It is only when you change a value in cols that MATLAB (tries to) create cols. This is when you run out of memory.
Here is more information: Loren's Blog.

  0 件のコメント

サインイン to comment.

More Answers (0)

サインイン してこの質問に回答します。

タグ


Translated by