为什么以下代码
for a=1:5:100
a = a+ 1;
end
迭代20次?
a
每次迭代都会增加5,但在实际循环中也会增加1。 99/6 = 16.5或17次迭代,为什么它会做20?
感谢您帮助了解for循环功能的工作原理。
答案 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
语句的数组设置。