sgolayfilt

sgolayfilt berechnet einen gleitenden Mittelwert mit dem Savitzky-Golay-Verfahren.

rvY2 = sgolayfilt(rvY1)
rvY2 = sgolayfilt(rvY1, p)
rvY2 = sgolayfilt(rvY1, p, nNeighbor)

Returnwert

rvY2 ist der Ergebnisvektor.

Parameter

rvY1

rvY1 ist ein reeller Vektor mit mindstens p x-Koordinaten.

p

p ist der Grad des Ausgleichspolynoms (1 .. 10, Default-Wert = 3).

nNeighbor

nNeighbor ist die halbe Fensterbreite. Die gesamte Fensterbreite ist nNeighbor * 2 + 1. (Default-Wert = 20).

Beispiel

../../_images/savitzky-golay.png
def test_sgolay()
{
    N = 200;
    t = linspace(0, 10, N);
    s = sin(2*PI/5*t);
    srand(1);
    sr = s + 0.3 * (rand(size(t))-0.5);
    // Sinus
    h = plot(t, s);
    XYSetProps(h[3], "curve-color='black'")
    XYSetLegendText(h[3], "sinus");
    // sin+rand
    h = plot(t, sr,  h[2]);
    XYSetProps(h[3], "curve-color='blue'")
    XYSetLegendText(h[3], "sinus+random");
    y = moving_average(sr, 10)
    h = plot(t, y,  h[2]);
    XYSetProps(h[3], "curve-color='red'")
    XYSetLegendText(h[3], "moving average (smooth())");
    // smooth(sin+rand)
    y = sgolayfilt(sr, 3, 20);
    h = plot(t, y, h[2]);
    XYSetProps(h[3], "curve-color='green'")
    XYSetLegendText(h[3], "Savitzky-Golay Filter");
}

History

Version Beschreibung
5.8.0 Neu.

id-931091