我想知道在Matlab中使用矢量作为for-loop范围的规则是什么?
例如,
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
已分配了向量{{1}}?感谢〜
答案 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)
正如您所发现的,如果您进行了实验,一旦您完成了range = [0.1:0.01:2]
这样的任务,那么名为range
的变量就是一个包含该范围内值的行向量。你的循环可以正常工作。就像它开始时一样
for i = [0.1 0.11 0.12 ...]