如何在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中的循环, 而代之以向量化代码 。