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 !!

 Accepted Answer

per isakson
per isakson on 19 Mar 2014
Edited: per isakson on 19 Mar 2014
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 Comments

oh thank you for this information
and sorry , i wrote there "error" by mistake
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 ?

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

on 19 Mar 2014

Commented:

on 8 Apr 2020

Community Treasure Hunt

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

Start Hunting!