可能重复:如何在MATLAB中迭代n维矩阵中的每个元素?
我有一个列向量 list ,我想迭代这样:
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中的矢量化算法通常要快得多 .
如果您只想将函数应用于每个元素并将结果放在输出数组中,则可以使用arrayfun .
正如其他人所指出的,对于大多数操作,最好避免MATLAB和vectorise your code instead中的循环 .
4 回答
在Matlab中,您可以直接迭代列表中的元素 . 如果您不需要知道当前正在处理哪个元素,这将非常有用 .
因此你可以写
请注意,Matlab迭代
list
的列,因此如果list
是nx1向量,您可能想要转置它 .在matlab中有许多函数,你根本不需要迭代 .
例如,要乘以它在列表中的位置:
matlab中的矢量化算法通常要快得多 .
如果您只想将函数应用于每个元素并将结果放在输出数组中,则可以使用arrayfun .
正如其他人所指出的,对于大多数操作,最好避免MATLAB和vectorise your code instead中的循环 .