Powiel możliwe:
How do I iterate through each element in an n-dimensional matrix in MATLAB?Jak iterować nad wektorem kolumn w Matlab?
Mam kolumny wektor list
które chciałbym iteracyjne tak:
for elm in list
//do something with elm
Jak?
Powiel możliwe:
How do I iterate through each element in an n-dimensional matrix in MATLAB?Jak iterować nad wektorem kolumn w Matlab?
Mam kolumny wektor list
które chciałbym iteracyjne tak:
for elm in list
//do something with elm
Jak?
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ść.
Nie jest również dobre, jeśli chcesz zmienić wartość elementów zawierających – greg121
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
masz na myśli '(:). '' Prawda? W przeciwnym razie używasz złożonego operatora sprzężonego zamiast operatora transpozycji. –
for i=1:length(list)
elm = list(i);
//do something with elm.
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.
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.
Też powiem, że googling pojęć "iteracyjnie przez macierz matlab" zwraca stackoverflow jako wynik numer 2. – James