繁体   English   中英

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

[英]Using vector as range in for-loop In 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 = range解释为i取每个range值,或者i被赋予向量range

谢谢〜

更一般地, 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是列向量,它将作为其值循环遍历该列。

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

 for index = values program statements : end 

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

valArray

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

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

    for i = [0.1 0.11 0.12 ...]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM