2012-05-14 5 views
7

Matlabのfor-loopの範囲としてベクトルを使用するルールは何ですか?for-loopでベクトルを範囲内で使用する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 = rangerange、 又はiの各値は、ベクトルrangeが割り当てられている服用iとして解釈されますか?

感謝〜http://www.mathworks.co.uk/help/techdoc/ref/for.htmlから

答えて

3

valArray

から列ベクトルのインデックスを作成します。

for index = values 
    program statements 
      : 
end 

... valuesは、次のいずれかの形式を持っていますその後の列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が列ベクトルの場合、その単一の列をその値としてループします。

関連する問題