可能重复:
How do I iterate through each element in an n-dimensional matrix in MATLAB?
我有一个列向量list
,我想像这样迭代:
for elm in list
//do something with elm
如何?
答案 0 :(得分:89)
在Matlab中,您可以直接迭代列表中的元素。如果您不需要知道当前正在处理哪个元素,这将非常有用。
因此你可以写
for elm = list
%# do something with the element
end
请注意,Matlab会遍历list
的列,因此如果list
是nx1向量,则可能需要对其进行转置。
答案 1 :(得分:29)
for i=1:length(list)
elm = list(i);
//do something with elm.
答案 2 :(得分:6)
在matlab中有很多函数,你根本不需要迭代。
例如,乘以它在列表中的位置:
m = [1:numel(list)]';
elm = list.*m;
matlab中的矢量化算法通常要快得多。
答案 3 :(得分:2)
如果您只想将函数应用于每个元素并将结果放在输出数组中,则可以使用arrayfun
。
正如其他人所指出的,对于大多数操作来说,最好避免使用MATLAB和vectorise your code instead中的循环。