使用 for 循环迭代空矩阵

Posted

技术标签:

【中文标题】使用 for 循环迭代空矩阵【英文标题】:Iterating an empty matrix using a for loop 【发布时间】:2013-07-30 19:56:42 【问题描述】:

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

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

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

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

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

【讨论】:

你的意思是for t = t' 吗? @TryHard 我的问题已被编辑,有人删除了v。我已经更新了匹配的答案。 @DennisJaheruddin - 这是我不知道的事情,这完全有道理。感谢您提供这些信息! 嗨@DennisJaheruddin,您能接受将问题标记为已解决的答案吗? (当然,除非你期待其他答案......)

以上是关于使用 for 循环迭代空矩阵的主要内容,如果未能解决你的问题,请参考以下文章

Matlab - 迭代地将行插入/追加到矩阵中

OpenCV 矩阵运算是不是比简单的循环迭代更快?

javascript while循环正确迭代但具有相同逻辑的for循环不是,在具有整数值和一些空值的数组上

For循环中的三元运算符导致无限迭代

matlab 二维矩阵for循环逐行赋值

For-Loop一个带有负迭代器的“空”向量?