使用for循环迭代空矩阵

时间:2013-07-30 15:16:30

标签: matlab for-loop

我一直认为使用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

是否有意义,或者这是一个错误?

1 个答案:

答案 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

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

至少它绝对值得警惕!