Why does a for loop iterate over an empty column vector?

6 views (last 30 days)
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?

Accepted Answer

Matt J
Matt J on 25 Aug 2022
Edited: Matt J on 25 Aug 2022
Yes, I'm sure it's expected. There will be as many iterations as there are columns of "bob".
k=0;
for bob=zeros(0,5)
k=k+1,
end
k = 1
k = 2
k = 3
k = 4
k = 5

More Answers (1)

Bruno Luong
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

Tags

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!