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

조회 수: 2 (최근 30일)
Young . 2012년 12월 6일
Here is my code:
rows = zeros(round(a large number),1);
cols = rows;
vals = rows;
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!

채택된 답변

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개)


Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by