Pre allocation do not work ...
이전 댓글 표시
Hi everyone,
I am a bit lost,
I ran a code this morning and the pre allocation do not work, it changes the size of my matrices with any reason,
So I did a small try like this :
n=3
x = zeros(1,n);
for ii=1:10
x( ii ) = ( ii );
end
%
Before I got an error because the size just exceeds... now it works, it changes the size of x, how to avoid that ?
Best regards,
댓글 수: 1
Adam
2020년 2월 3일
Pre-size it correctly! You pre-size it to 3 then put it in a for loop up to 10 assignging values to it. Where do you expect the next 7 elements to come from? You didn't pre-allocate those so the array grows in the loop.
채택된 답변
추가 답변 (1개)
Gauthier Briere
2020년 2월 3일
댓글 수: 3
Walter Roberson
2020년 2월 3일
It would give the index error if you tried to read from a location before writing. For example x(ii, jj) = x(ii, jj) + ii;
I still don't get it!! Why are you expecting an error? The preallocation simply helps in speeding up the loop. See this answer for details:
Other than that the for loop will always overwrite the preallocated loop. If you MUST HAVE an error you can insert it manually like this:
n=3
x = zeros(1,n);
temp=length(x);
for ii=1:10
if ii>temp
error('Index exceeds preallocated matrix size')
break
end
x( ii ) = ( ii );
end
%
Gauthier Briere
2020년 2월 3일
카테고리
도움말 센터 및 File Exchange에서 MATLAB에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!