爲什麼下面的代碼在一個循環迭代次數
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