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

7 visualizaciones (últimos 30 días)
Scott
Scott el 25 de Ag. de 2022
Respondida: Bruno Luong el 25 de Ag. de 2022
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?

Respuesta aceptada

Matt J
Matt J el 25 de Ag. de 2022
Editada: Matt J el 25 de Ag. de 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

Más respuestas (1)

Bruno Luong
Bruno Luong el 25 de Ag. de 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

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by