为什么下面的代码
for a=1:5:100
a = a+ 1;
end迭代20次?
a每次迭代增加5次,但在实际循环中也增加1次。99/6 = 16.5或17次迭代,那么为什么要执行20次呢?
感谢您帮助理解for循环函数的工作原理。
发布于 2014-04-17 12:50:07
在Matlab中,不管您对循环索引变量(a)在for循环中做什么,都会被抛出,并且a在下一次遍历开始时会被重置。所以循环中的a = a + 1没有任何效果。见Is there a foreach in MATLAB? If so, how does it behave if the underlying data changes?。
发布于 2014-04-17 12:50:47
与C或C++等语言不同,在MATLAB中更改循环索引并不是在循环迭代中持久的。
换句话说,如果您增加a,则该循环的其余部分将保持增量。然而,在到达循环顶部时,MATLAB并没有将5添加到a中。相反,它从提供的值列表中选择a的下一个值。这有效地“覆盖”了您对循环内的循环索引所做的更改。
发布于 2014-04-17 15:15:41
像这样在MATLAB中查看for循环的方法,
for a=1:5:100直接提供数组,
ai = [1:5:100];
for a = ai循环将遍历ai中的值。句号。在循环中对a做什么并不重要。在每次迭代开始时,a的值将根据给定给for语句的数组来设置。
https://stackoverflow.com/questions/23133396
复制相似问题