moving_median

Die Funktion moving_median berechnet einen gleitenden Median für das gegebene Signal. Die Funktion kann zum Glätten eines Signals und zum Entfernen von Ausreißern verwendet werden.

rvMedian = moving_median(rvY, nNeighbor)

Returnwert

rvMedian ist das geglättete Signal. Das Signal hat die gleiche Länge wie rvY. Am Anfang und Ende des Signals werden entsprechend weniger Datenpunkte bei der Mittelwertbildung berücksichtigt.

Parameter

rvY

rvY ist das zu glättende Signal.

nNeighbor

nNeighbor ist die Fensterbreite. 3 <= nNeighbor <= 1025. Gerade Werte werden auf die nächst größe ungerade ganze Zahl aufgerundet.

Beispiel

Im folgenden Beispiel werden 5 aufeinander folgende Punkte aufsteigend sortiert. Der dritte Wert wird nach rvOut geschrieben. Bei einer Fensterbreite von 5 Punkten werden die ersten zwei Punkte und die letzten zwei Punkte von rvIn unverändert nach rvOut geschrieben. Der erste berechnete Punkt ist der dritte Wert in rvOut. [4,5,6,7,27] -> 6, [4,6,7,8,27] -> 7, usw.

rvIn   = [5, 7, 6, 4, 27, 8, 4, 5]
rvOut = moving_median(rvIn, 5)
rvOut -> [5, 7, 6, 7, 6,  8, 4, 5]
x = linspace(0, 2*PI, 1000)
y = sin(x) + rand(1, 1000) * 0.1
yy = moving_median(y, 11);
h = plot(x, y);
XYSetProps(h[3], "curve_color = 'blue'");
h = plot(x, yy, h[2]);
XYSetProps(h[3], "curve_color = 'red'");

History

Version Beschreibung
5.14.9 Neu.

id-244162