MATLAB Answers

Young
0

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

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.

タグ

1 件の回答

回答者: 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.



Translated by