我一直认为使用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
是否有意义,或者这是一个错误?
答案 0 :(得分:22)
for
loop会在其输入的所有列上运行。由于0x1矩阵有一个(空)列,因此循环将简单地完成。空矩阵没有提到异常,因此t
只是空矩阵,如下所示:
for t = ones(0, 1) %// Iterate over an empty 0x1 matrix
size(t) % t is a 0x1 matrix
end
这是一个错误吗?可能不是。
是否有意义?好吧,我想如果输入为空,我宁愿不执行循环,但也可能有优势。
至少它绝对值得警惕!