2012-05-14 106 views
7

我想知道在Matlab中for循環中使用向量作爲範圍的規則是什麼?使用向量作爲for循環中的範圍在Matlab中

例如,

range = [0.1:0.01:2]'; % wrong 
range = [0.1:0.01:2]; % correct 

for i = range 
i 
end 
  1. 爲什麼,如果range是列向量,它不會工作,而 如果range是行向量,它會?
  2. i = range解釋爲irange, 或i的每個值分配給向量range

感謝〜

回答

3

http://www.mathworks.co.uk/help/techdoc/ref/for.html

for index = values 
    program statements 
      : 
end 

... values具有下列形式之一:

valArray

從創建一個列向量索引後續專欄o f陣列 valArray每次迭代。例如,在第一次迭代, index = valArray(:,1) ...

0
  1. 這是這樣,因爲它是這樣的。我不認爲這有什麼深層次的解釋。
  2. 正如你會發現,如果你嘗試過,一旦你做了如range = [0.1:0.01:2]這樣的任務,那麼稱爲range的變量是一個包含範圍內值的行向量。你的循環將工作得很好。因爲它會如果它開始

    for i = [0.1 0.11 0.12 ...]

10

更一般地,range可以是一個矩陣,循環變量循環在其列。

range = rand(3,3); 
for col = range 
col 
end 

col = 
     0.86341 
     0.11625 
     0.20319 
col = 
     0.59721 
    0.098357 
     0.8356 
col = 
     0.89578 
     0.46217 
     0.93585 

所以,如果range是一個行向量,它會遍歷它的價值觀。但是,如果range是列向量,它將在該列上作爲其值循環。