首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环中的迭代次数

问循环中的迭代次数
EN

Stack Overflow用户
提问于 2014-04-17 12:41:07
回答 3查看 187关注 0票数 1

为什么下面的代码

代码语言:javascript
复制
for a=1:5:100
    a = a+ 1;
end

迭代20次?

a每次迭代增加5次,但在实际循环中也增加1次。99/6 = 16.5或17次迭代,那么为什么要执行20次呢?

感谢您帮助理解for循环函数的工作原理。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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?。

票数 4
EN

Stack Overflow用户

发布于 2014-04-17 12:50:47

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

换句话说,如果您增加a,则该循环的其余部分将保持增量。然而,在到达循环顶部时,MATLAB并没有将5添加到a中。相反,它从提供的值列表中选择a的下一个值。这有效地“覆盖”了您对循环内的循环索引所做的更改。

票数 1
EN

Stack Overflow用户

发布于 2014-04-17 15:15:41

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

代码语言:javascript
复制
for a=1:5:100

直接提供数组,

代码语言:javascript
复制
ai = [1:5:100];
for a = ai

循环将遍历ai中的值。句号。在循环中对a做什么并不重要。在每次迭代开始时,a的值将根据给定给for语句的数组来设置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23133396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档