I always assumed that iterating an empty vector using a for
loop was the same as not having the loop at all. However, I stumbled upon this strange behavior:
for t = [] %// Iterate an empty 0x0 matrix
1
end
for t = ones(1, 0) %// Iterate an empty 1x0 matrix
2
end
for t = ones(0, 1) %// Iterate an empty 0x1 matrix
3
end
The result is:
ans =
3
Does it make sense, or is this a bug?
The for
loop runs over all columns of its input. Since a 0x1 matrix has one (empty) column, the loop will simply go over that. No exception is mentioned for empty matrices, so here t
will simply be the empty matrix as seen from:
for t = ones(0, 1) %// Iterate over an empty 0x1 matrix
size(t) % t is a 0x1 matrix
end
Is it a bug? Probably not.
Does it make sense? Well, I think I would prefer the loop not to execute if the input is empty, but probably there are advantages to this as well.
At least it is definitely something to be alert of!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With