MATLAB następujące for
pętli:Pętla nie iteracyjne
for i = [1:100]'
%'// Do something, such as disp(i)
end
jest najwyraźniej nie bardzo realizowane przez iterację, a i
się matrycę [1 2 3 ... 100], a " pętla "jest wykonywana tylko raz na tej macierzy i
. Możesz to sprawdzić, drukując wartość i
lub inne informacje o śledzeniu. Przez pętlę przechodzi tylko jedno przejście.
Czy można zmusić MATLAB do wykonania prawdziwej pętli? Powodem, dla którego pytam, jest to, że powyższe podejście jest dobre dla wielu przypadków, ale o wiele bardziej bolesne, gdy masz zagnieżdżone pętle, które trzeba uruchomić.
Przykład:
Poniższy kod nie zrobi to, czego można się spodziewać, jeśli myślałeś, że coraz rzeczywisty iteracji przez pętlę:
for i = outlier
data(i) = median(data(i-100:i+100))
end
Można by się spodziewać w każdym indeksie Outlier ten zastąpiłby dane (i) z medianą danych z i-100 do i + 100, ale tak nie jest. W rzeczywistości mediana zwraca pojedynczą wartość obliczoną na konglomeracie wszystkich zakresów, o które się troszczyłeś, a każdy punkt danych (i) jest zastępowany tą pojedynczą wartością.
można zakładać, że wyjście odtwarza to, co widzisz. Nie widziałem tego zachowania i dużo uwagi poświęcałem pętlom w Matlab. – Iterator
Nie masz na myśli "median (dane (i-100: i + 100))"? (z ":") –
@Clement J. Tak, robię. Poprawione teraz. –