如何在Matlab中迭代列向量?

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

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

 for elm in list //do something with elm 

怎么样?

在Matlab中,您可以直接遍历列表中的元素。 如果您不需要知道您当前正在处理哪个元素,这可能很有用。

因此你可以写

 for elm = list %# do something with the element end 

请注意,Matlab遍历list的列,所以如果list是一个nx1向量,您可能需要转置它。

 for i=1:length(list) elm = list(i); //do something with elm. 

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

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

 m = [1:numel(list)]'; elm = list.*m; 

MATLAB中的vector化algorithm通常要快得多。

如果你只是想对每个元素应用一个函数,并把结果放在一个输出数组中,你可以使用arrayfun

正如其他人已经指出的,对于大多数操作,最好避免MATLAB中的循环, 而代之以向量化代码 。