2014-04-17 113 views
1

为什么下面的代码在一个循环迭代次数

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

迭代20次?

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

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

+0

为什么你将它除以6而不是5,因为增量是5而不是6. – Himanshu

+1

改变循环内循环的索引是一种不好的做法。 – am304

+0

Himanshu:因为在实际循环中也会增加1。 – NathanielJPerkins

回答

1

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

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

0

查看for环在MATLAB像这样的方式,

for a=1:5:100 

是直接提供一种阵列,

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

循环将遍历值ai。期。不管你在循环中对a做什么。在每次迭代开始时,a的值将根据给予for语句的数组进行设置。