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

时间:2012-05-14 14:46:32

标签: matlab

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

例如,

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

for i = range
i
end
  1. 为什么如果range是列向量,它将不起作用,而 如果range是行向量,它会吗?
  2. i = rangei解释为range,取i的每个值, 或range已分配了向量{{1}}?
  3. 感谢〜

3 个答案:

答案 0 :(得分: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是列向量,它将循环遍历该列作为其值。

答案 1 :(得分:3)

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

for index = values
   program statements
          :
end
     

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

     

valArray

     

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

答案 2 :(得分:0)

  1. 就是这样,因为就是这样。我不认为对此有任何深刻的解释。
  2. 正如您所发现的,如果您进行了实验,一旦您完成了range = [0.1:0.01:2]这样的任务,那么名为range的变量就是一个包含该范围内值的行向量。你的循环可以正常工作。就像它开始时一样

    for i = [0.1 0.11 0.12 ...]