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被解释为i取 的每个值range,还是i用向量分配range

谢谢~

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 回答