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

조회 수: 3 (최근 30일)
Scott
Scott 2022년 8월 25일
답변: Bruno Luong 2022년 8월 25일
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?

채택된 답변

Matt J
Matt J 2022년 8월 25일
편집: Matt J 2022년 8월 25일
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

추가 답변 (1개)

Bruno Luong
Bruno Luong 2022년 8월 25일
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

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

태그

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by