Why does a for loop iterate over an empty column vector?
5 views (last 30 days)
Show older comments
A for loop in my code was executing unexpectedly. I had provided it with an empty column vector, and I had supposed that it would not execute. However it does iterate once, as this simple example shows:
>> bob = intersect([1;2;3],[4;5;6])
bob =
0×1 empty double column vector
>> for ii = bob; disp('executed an iteration'); end
executed an iteration
This behavior is not observed when iterating over an empty vector or an empty row vector, as shown below:
>> for ii = []; disp('executed an iteration'); end
>> fred = intersect([1,2,3],[4,5,6])
fred =
1×0 empty double row vector
>> for ii = fred; disp('executed an iteration'); end
Is this expected and/or desired behavior for a for loop to iterate over an empty column vector?
0 Comments
Accepted Answer
More Answers (1)
Bruno Luong
on 25 Aug 2022
Yes this is expected.
The for-loop iterates on the number of columns of an array, regardless the number of row
for c = A
...
end
is equivalent to
for j=1:size(A,2)
c = A(:,j);
...
end
0 Comments
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!