2017-05-09 7 views
0

Ich habe nicht viel Erfahrung mit Matlab. Ich habe einen Zeilenvektor mit 17497 Elementen und ich möchte eine Schleife erstellen, um den Median aller 120 Werte zu erhalten.Median für jeden n-ten Wert in Matlab

Also, der Median von Wert 1: 120, dann der nächste Median der Werte 121: 240 und so weiter.

Kann mir jemand helfen?

Vielen Dank im Voraus, Sunna

Antwort

0

ich, dass man einfach ignoriert die letzten Elemente in der Zeilenvektor so zu übernehmen werde, dass die Reihe gleichmäßig in Teile 120 unterteilt werden können Sie Ihre Zeile dann verwandeln Vektor in eine 120-Zeilen-Matrix. median kann direkt mit dieser Matrix arbeiten und den Median jeder Spalte zurückgeben.

N = 17497; 
A = randn(1,N); 
newN = N - mod(N,120); 
median(reshape(A(1:newN),120,[])); 
+0

@ S.Kupfer: 'rand' Zufallszahlen erzeugt,' rand (2,3) 'ist ein zufälliges Array der Größe erstellen [2,3] , beispielsweise. – Jonas

+0

@ Jonas, Danke! Ihre beiden Lösungen haben mir sehr geholfen und sehr gut funktioniert! –

1

könnten Sie accumarray

N = 17497; 
data = rand(N,1); 
%# array with 1,1,1,2,2,2 etc 
idx = floor((0:N-1).'/120)+1; 
%# create median for groups of 120 data points 
%# discard the last one if needed as it's <120 points 
out = accumarray(idx,data,[],@median); 
Verwandte Themen