为什么下面的代码在一个循环迭代次数
for a=1:5:100
a = a+ 1;
end
迭代20次?
a
每迭代增加5个,但在实际循环中也增加1个。 99/6 = 16.5或17次迭代,为什么它会做20次?
感谢您了解for循环函数的工作原理。
为什么下面的代码在一个循环迭代次数
for a=1:5:100
a = a+ 1;
end
迭代20次?
a
每迭代增加5个,但在实际循环中也增加1个。 99/6 = 16.5或17次迭代,为什么它会做20次?
感谢您了解for循环函数的工作原理。
在Matlab中,无论您对for
循环内的循环索引变量(a
)做什么都会丢失,并且a
在下一次传递开始时被重置。所以循环内的a = a + 1
没有任何影响。见Is there a foreach in MATLAB? If so, how does it behave if the underlying data changes?。
谢谢,有道理。 – NathanielJPerkins
与C或C++之类的语言不同,在循环迭代中改变MATLAB中的循环索引并不是持久的。
换句话说,如果您增加a
,它将在该循环的其余部分保持递增。但是,在到达循环顶部时,MATLAB不会将5添加到a
。而是从您提供的值列表中选择下一个值a
。这有效地“覆盖”了对循环内循环索引所做的更改。
查看for
环在MATLAB像这样的方式,
for a=1:5:100
是直接提供一种阵列,
ai = [1:5:100];
for a = ai
循环将遍历值ai
。期。不管你在循环中对a
做什么。在每次迭代开始时,a
的值将根据给予for
语句的数组进行设置。
为什么你将它除以6而不是5,因为增量是5而不是6. – Himanshu
改变循环内循环的索引是一种不好的做法。 – am304
Himanshu:因为在实际循环中也会增加1。 – NathanielJPerkins