2014-04-17 112 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語句的數組進行設置。