2013-04-25 27 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

相关问题