循环中的迭代次数

时间:2014-04-17 12:41:07

标签: matlab

为什么以下代码

for a=1:5:100
    a = a+ 1;
end

迭代20次?

a每次迭代都会增加5,但在实际循环中也会增加1。 99/6 = 16.5或17次迭代,为什么它会做20?

感谢您帮助了解for循环功能的工作原理。

3 个答案:

答案 0 :(得分:4)

在Matlab中,无论你对a循环内的循环索引变量(for)做什么都会被抛弃,a会在下一遍开始时重置。因此循环内的a = a + 1无效。请参阅Is there a foreach in MATLAB? If so, how does it behave if the underlying data changes?

答案 1 :(得分:1)

与C或C ++等语言不同,在循环迭代中,在MATLAB中更改循环索引并不是持久的。

换句话说,如果你增加a,它将在该循环的其余部分保持递增。但是,在到达循环的顶部时,MATLAB不会向a添加5。相反,它会从您提供的值列表中选择a的下一个值。这有效地"覆盖"您对循环内循环索引所做的更改。

答案 2 :(得分:0)

在MATLAB中查看for循环的方法就像这样,

for a=1:5:100

是直接提供数组,

ai = [1:5:100];
for a = ai

循环将迭代ai中的值。期。在循环中对a所做的事情并不重要。在每次迭代开始时,a的值根据给for语句的数组设置。