在Matlab中使用向量作为for循环中的范围

Tim*_*Tim 7 matlab

我想知道在Matlab中使用矢量作为for-loop范围的规则是什么?

例如,

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

for i = range
i
end
Run Code Online (Sandbox Code Playgroud)
  1. 为什么如果range是列向量,它将无法工作,而如果range是行向量,它会?
  2. i = range被解释为i采用每个值range,还是i赋予向量range

谢谢〜

Sam*_*rts 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
Run Code Online (Sandbox Code Playgroud)

因此,如果range是行向量,它将循环其值.但如果range是列向量,它将作为其值循环在该单个列上.


Oli*_*rth 3

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

for index = values
   program statements
          :
end
Run Code Online (Sandbox Code Playgroud)

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

valArray

在每次迭代时从数组的后续列创建列向量索引 valArray。例如,在第一次迭代中, index = valArray(:,1)...