24

我一直认为使用循环迭代一个空向量for与根本没有循环是一样的。但是,我偶然发现了这种奇怪的行为:

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

结果是:

ans =
    3

这有意义吗,还是这是一个错误?

4

1 回答 1

22

for循环遍历其输入的所有列。由于 0x1 矩阵有一个(空)列,因此循环将简单地遍历该列。没有提到空矩阵的例外,所以这里t只是空矩阵,如下所示:

for t = ones(0, 1) %// Iterate over an empty 0x1 matrix
    size(t) % t is a 0x1 matrix
end

它是一个错误吗?可能不是。
是否有意义?好吧,我想如果输入为空,我宁愿不执行循环,但可能这也有好处。

至少这绝对是值得警惕的事情!

于 2013-07-30T15:16:29.520 回答