我想知道在 Matlab 的 for 循环中使用向量作为范围的规则是什么?
例如,
range = [0.1:0.01:2]'; % wrong
range = [0.1:0.01:2]; % correct
for i = range
i
end
- 为什么如果
range
是列向量,它不起作用,而如果range
是行向量,它会? - 将
i = range
被解释为i
取 的每个值range
,还是i
用向量分配range
?
谢谢~
我想知道在 Matlab 的 for 循环中使用向量作为范围的规则是什么?
例如,
range = [0.1:0.01:2]'; % wrong
range = [0.1:0.01:2]; % correct
for i = range
i
end
range
是列向量,它不起作用,而如果range
是行向量,它会?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)
...
如果您进行了实验,您会发现,一旦您进行了赋值,range = [0.1:0.01:2]
那么调用的变量range
就是一个包含范围内值的行向量。您的循环将正常工作。就像它开始一样
for i = [0.1 0.11 0.12 ...]