The Variable appears to change size on every loop iteration

[num_class,num_instance]=size(Outputs);
temp_Outputs=[];
temp_test_target=[];
for i=1:num_instance
temp=test_target(:,i);
if((sum(temp)~=num_class)&&(sum(temp)~=-num_class))
*temp_Outputs=[temp_Outputs,Outputs(:,i)];
temp_test_target=[temp_test_target,temp];*
end
end
Error: The Variable "temp_Outputs" appears to change size on every loop iteration
Question : I have No clue how to Preallocate it ?? Please help !!

 채택된 답변

per isakson
per isakson 2014년 3월 19일
편집: per isakson 2014년 3월 19일

2 개 추천

This is not an error, it's a warning. It is inefficient to change size of a variable in a loop.
However, the if-statement makes it difficult to know the final size in advance, which is "needed" to preallocate.
IMO: don't care about the warning if the execution time is ok. It is possible to suppress it.
See:

댓글 수: 3

oh thank you for this information
and sorry , i wrote there "error" by mistake
per isakson
per isakson 2014년 3월 19일
편집: per isakson 2014년 3월 19일
Check the links I provided. They are in the order from basic to advanced. There is no single sentence answer.
What if I had an execution time problem with a code very similar to this, my vector also is created by conactenation in a for loop, is there an efficient alternative ?

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

질문:

2014년 3월 19일

댓글:

2020년 4월 8일

Community Treasure Hunt

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

Start Hunting!

Translated by