2013-04-25 55 views
-1
>> a = [1 1 2 3 5 8 13 21 13 37]; 
>> d = [1 2]; 
>> w = [0 0 0]; 
    for e = d 
     g = 0; 
     for f = a 
      if mod (f, 2) == 0 
       g = [g f]; 
      end 
     end 
w = [w;g]; 
end 
>> w 

W的輸出是矩陣Matlab中的「for」循環如何在每次迭代中更改其控制變量?

​​

我的問題是關於for循環。 Matlab for-loops是否取值,而不是邏輯條件?例如,當查看'for f = a'時,f是否取得數組A的值,然後for循環遍歷F的列?

謝謝。

+1

http://www.mathworks.co.uk/help/matlab/ref/for.html – 2013-04-25 04:49:42

回答

3

FOR循環有一個變量,每次通過迭代器變量對數組中下一個值的循環。迭代器變量會一次一個地顯示列的值。 foor循環中賦值語句的右側不需要是數值數組 - 它可以是字符串的單元數組或例如結構等。

換句話說,當您爲

for f=a, ....., end 

這相當於寫

for i=1:numel(a)/size(a,1); f=a(:,i); .... ; end 

您可以輕鬆地通過添加一些DISP語句到你的代碼中看到這一點:

for e = d 
     disp(e) 
     g = 0; 
     for f = a 
      disp(f) 
      if mod (f, 2) == 0 
       g = [g f]; 
      end 
     end 
w = [w;g]; 
end 

WHILE在matlab中循環採取邏輯條件。

(編輯:我忘使得f呈現的列的值,如果被多維)

+0

感謝您解決這個問題。 – user2201112 2013-04-25 05:04:47

1

是的,MATLAB的循環變量被賦值給「數組」,在MATLAB中被稱爲矢量。循環變量的值在循環的每次迭代時自動遍歷向量的元素。一個常見的構造是

for i=1:10 %generates vector of 1,2,...,10 
i %will print i=1, i=2, etc. 
end 

在這種情況下,矢量是動態生成的,並且是連續的數字。但是沒有理由不能傳遞任何任意向量來迭代,就像你的情況中的「a」一樣。在每次迭代中,「f」都包含「a」中包含的序列中的下一個值。

+0

謝謝拉吉,清除它。 – user2201112 2013-04-25 05:04:18

+0

不客氣。如果你喜歡答案,隨時歡迎! – rajb245 2013-04-25 05:04:59

+0

投票需要15點聲望,還沒有人。 – user2201112 2013-04-25 05:05:59

相關問題