7

ベクトルを Matlab の for ループの範囲として使用するためのルールは何ですか?

例えば、

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と解釈されますか、またはvector が割り当てられますか?irangeirange

ありがとう〜

4

3 に答える 3

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が列ベクトルの場合、その値としてその単一の列をループします。

于 2012-05-14T15:13:03.640 に答える
3

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

for index = values
   program statements
          :
end

...values次のいずれかの形式を持ちます。

valArray

valArray各反復で配列の後続の列から列ベクトル インデックスを作成し ます。たとえば、最初の繰り返しでは index = valArray(:,1)...

于 2012-05-14T14:52:00.367 に答える
0
  1. その通りだからその通り。これについて深い説明はないと思います。
  2. 実験した場合にわかるように、次のような割り当てを行うrange = [0.1:0.01:2]と、呼び出される変数rangeは範囲内の値で構成される行ベクトルになります。あなたのループは問題なく動作します。始まったとしても

    for i = [0.1 0.11 0.12 ...]

于 2012-05-14T14:52:39.647 に答える