2010-08-11 195 views

回答

74

在Matlab中,您可以直接遍歷列表中的元素。如果您不需要知道您當前正在處理哪個元素,這可能很有用。

因此,你可以寫

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

注意,Matlab的遍歷的list列,所以如果list是NX1向量,你可能要調換它。

+0

也不好,如果你想改變包含元素的值 – greg121 2014-02-08 22:19:45

+4

如果你不知道列表是列還是行向量,你可以使用相當難看的組合'(:)':'for elm =列表(:)'; %...; end'。 '(:)''組合也會從矩陣創建行向量,所以請小心處理。 – JaBe 2014-10-29 15:07:42

+0

你的意思是'(:)。''對嗎?否則,您正在使用複共軛運算符而不是轉置運算符。 – 2017-02-20 15:22:16

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

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

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

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

在MATLAB矢量算法一般要快得多。

2

如果您只是想將函數應用於每個元素並將結果放入輸出數組中,則可以使用arrayfun。如其他人指出的,對於大多數操作,最好避免MATLAB中的循環和vectorise your code instead