如何在Matlab中迭代列向量?

sna*_*ile 52 iteration matlab

可能重复:
如何在MATLAB中迭代n维矩阵中的每个元素?

我有一个列向量list,我想迭代这样:

for elm in list
   //do something with elm
Run Code Online (Sandbox Code Playgroud)

怎么样?

Jon*_*nas 95

在Matlab中,您可以直接迭代列表中的元素.如果您不需要知道当前正在处理哪个元素,这将非常有用.

因此你可以写

for elm = list
%# do something with the element
end
Run Code Online (Sandbox Code Playgroud)

请注意,Matlab会遍历列list,因此如果list是nx1向量,则可能需要对其进行转置.

  • 如果你不知道列表是列还是行向量,你可以使用相当难看的组合`(:)'`:`for elm = list(:)'; %...;结束.组合`(:)'`也会从矩阵创建行向量,所以要小心处理. (4认同)

Jam*_*mes 30

for i=1:length(list)
  elm = list(i);
  //do something with elm.
Run Code Online (Sandbox Code Playgroud)


Mar*_*arc 6

在matlab中有许多函数,你根本不需要迭代.

例如,要乘以它在列表中的位置:

m = [1:numel(list)]';
elm = list.*m;
Run Code Online (Sandbox Code Playgroud)

matlab中的矢量化算法通常要快得多.