2010-08-11 16 views

Odpowiedz

74

W programie Matlab można bezpośrednio przeglądać elementy na liście. Może to być przydatne, jeśli nie musisz wiedzieć, który element obecnie pracujesz.

Zatem można napisać

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

Należy pamiętać, że Matlab iteracji kolumnach list, więc jeśli list jest wektorem nx1, może chcesz go przenieść.

+0

Nie jest również dobre, jeśli chcesz zmienić wartość elementów zawierających – greg121

+4

Jeśli nie wiesz, czy lista jest kolumną lub wierszem, możesz użyć raczej brzydkiej kombinacji '(:)' ':' dla elm = lista(:)'; % ...; koniec'. Kombinacja '(:) '' również utworzy wektory liniowe z macierzy, więc należy zachować ostrożność. – JaBe

+0

masz na myśli '(:). '' Prawda? W przeciwnym razie używasz złożonego operatora sprzężonego zamiast operatora transpozycji. –

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

z wieloma funkcjami w programie Matlab, nie trzeba w ogóle wykonywać iteracji.

na przykład, aby pomnożyć przez to pozycja na liście:

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

vectorized algorytmy w Matlab są na ogół znacznie szybciej.

2

Jeśli chcesz tylko zastosować funkcję do każdego elementu i umieścić wyniki w tablicy wyjściowej, możesz użyć arrayfun.

Jak zauważyli inni, w przypadku większości operacji najlepiej unikać pętli w MATLAB i vectorise your code instead.

Powiązane problemy