SavitzkyGolayDerivative (FPScript)

21.09.2021

Berechnet die Ableitung eines Datensatzes mit einem Savitzky-Golay Glättungsfilter (Least-Squares Ableitung). Effektives Verfahren zur Bestimmung der geglätteten Ableitung eines verrauschten Datensatzes.

Syntax

SavitzkyGolayDerivative(DataSet, SmoothingWidth, [ PolynomialOrder = 4 ], [ DerivativeOrder = 1 ] [ , Extrapolate = FALSE ])

 

Die Syntax der SavitzkyGolayDerivative-Funktion besteht aus folgenden Teilen:

Teil

Beschreibung

DataSet

Der (verrauschte) Datensatz, dessen (geglättete) Ableitung berechnet werden soll.

Es sind alle Datenstrukturen erlaubt außer Einzelwert und Liste. Es sind alle numerischen Datentypen erlaubt.

Ist das Argument eine Liste, dann wird die Funktion für jedes Element der Liste ausgeführt und das Ergebnis ist ebenfalls eine Liste.

SmoothingWidth

Gibt an, wie viel benachbarte Werte inklusive des jeweiligen Datenpunktes zur Berechnung des (geglätteten) Ableitungsfilters einbezogen werden sollen. Die Glättungsbreite sollte eine ungerade Zahl sein. Ansonsten ist das Intervall unsymmetrisch und es wird rechts vom Zentrum ein Wert mehr als links davon in die Berechnung einbezogen.

Erlaubte Datenstrukturen sind Einzelwert. Es sind alle ganzzahligen Datentypen erlaubt.

Der Wert muss größer gleich 0 sein.

Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt.

PolynomialOrder

Gibt die Ordnung des Polynoms an, dass lokal an den Datensatz gefittet und somit zur Bestimmung der Filterkoeffizienten des (geglätteten) Ableitungsfilters verwendet wird. Die Polynomordnung sollte kleiner als die Glättungsbreite gewählt werden (damit genügend Datenpunkte zur lokalen Polynomanpassung zur Verfügung stehen). Ansonsten wird die Polynomordnung für die Berechnung auf SmoothingWidth - 1 reduziert.

Erlaubte Datenstrukturen sind Einzelwert. Es sind alle ganzzahligen Datentypen erlaubt.

Der Wert muss größer gleich 1 und kleiner gleich 15 sein.

Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt.

Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert 4 gesetzt.

DerivativeOrder

Gibt die Ordnung der gewünschten Ableitung ein. Das Argument darf nicht größer als PolynomialOrder sein.

Erlaubte Datenstrukturen sind Einzelwert. Es sind alle ganzzahligen Datentypen erlaubt.

Der Wert muss größer gleich 1 und kleiner gleich 15 sein.

Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt.

Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert 1 gesetzt.

Extrapolate

Der Wert TRUE gibt an, dass die Randpunkte zur Filterung symmetrisch verlängert werden. Die Filterkoeffizienten müssen in diesem Fall nur einmal berechnet werden. Die Extrapolation kann zwar zu einem irregulären Verhalten der (geglätteten) Ableitung an den Rändern führen, der Algorithmus bleibt aber schnell. Bei Wahl von FALSE wird die gleiche polynomiale Ordnung verwendet, um die (geglättete) Ableitung an den Randpunkten zu bestimmen. Dabei bleiben an den Randpunkten die Glättungsbreite und die Ordnung des zu fittenden Polynoms gleich, während der Filtermittelpunkt in Richtung der Ränder verschoben wird. Die Filterkoeffizienten müssen also in diesem Fall für alle Randpunkte einzeln berechnet werden. Dies liefert in der Regel eine höhere Genauigkeit zur Bestimmung der (geglätteten) Ableitung an den Randpunkten, der Algorithmus ist aber erheblich langsamer.

Erlaubte Datenstrukturen sind Einzelwert. Unterstützte Datentypen sind Wahrheitswert.

Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt.

Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert FALSE gesetzt.

Anmerkungen

Das Ergebnis hat die gleiche Struktur und Einheit wie das Argument DataSet.

Zur Berechnung der (geglätteten) Ableitung wird jeder Wert in DataSet mit (SmoothingWidth-1)/2 Nachbarwerten links und (SmoothingWidth-1)/2 Nachbarwerten rechts gewichtet (wenn SmoothingWidth ungerade). Die (geglättete) Ableitung entspricht dann einer Faltung des Signals mit Filterkoeffizienten der Länge SmoothingWidth. Bei diesem Verfahren werden die Filterkoeffizienten so bestimmt, dass als Ergebnis die Ableitung einer lokalen polynomialen Regression (d.h. lokalen polynomialen Kurvenanpassung) zurückgegeben wird. Die Filterkoeffizienten sind dabei nicht von den y-Werten abhängig. Der Algorithmus ist beschrieben in SavitzkyGolay Algorithmus.

Die Filterung ist nicht auf die Unterdrückung höherer Frequenzen, sondern auf die Unterdrückung statistischer Momente höherer Ordnung optimiert. Das Filter eignet sich daher insbesondere zur Bestimmung der Ableitung von Signalen, die ohne Rauschen einen hohen Frequenzbereich aufweisen würden. Das Savitzky-Golay-Glättungsverfahren wird auch "Digital Smoothing Polynomial Filter (DISPO)" oder "Least-Squares Smoothing" oder "Least-Squares Differentiation" genannt.

Vor der Filterung werden die Werte in reelle bzw. komplexe 64-Bit Fließkommazahlen gewandelt. Das Ergebnis hat immer den Datentyp reelle oder komplexe 64-Bit Fließkommazahl.

Die Grafik hebt den Unterschied der Derivative-Funktion, nachträglich geglättet mit der Smooth-Funktion (gleitender Mittelwert), und der SavitzkyGolayDerivative-Funktion (mit polynomialer Ordnung 7) hervor. Es wird jeweils die gleiche Glättungsbreite verwendet. Der Savitzky-Golay Ableitungsfilter kann den idealen Kurvenverlauf deutlich besser approximieren als der gleitende Mittelwert:

Verfügbarkeit

FlexPro Basic, Professional, Developer Suite

Beispiele

SavitzkyGolayDerivative(Signal, 11, 3)

Berechnet die geglättete erste Ableitung eines verrauschten Signals mit dem Savitzky-Golay-Filter. Die Ableitung wird berechnet durch Bestimmung der Ableitung eines Polynoms dritten Grades, welches lokal an den Datensatz gefittet wird. Zur lokalen Kurvenanpassung werden insgesamt 11, d.h. jeweils fünf benachbarte Werte links und rechts des jeweiligen Datenpunktes in das Ergebnis einbezogen.

SavitzkyGolayDerivative(Signal, 25, 6, 2)

Berechnet die geglättete zweite Ableitung eines verrauschten Signals mit dem Savitzky-Golay-Filter. Die zweite Ableitung wird berechnet durch Bestimmung der Ableitung eines Polynoms sechsten Grades, welches lokal durch 25 Datenpunkte gefittet wird.

SavitzkyGolayDerivative(DataSet, 5, 4)

Berechnet die erste Ableitung durch Bestimmung der Ableitung eines Polynoms vierten Grades, welches lokal durch jeweils 5 Datenpunkte gefittet wird. Das Polynom vierten Grades, gefittet durch 5 Datenpunkte, ist eindeutig bestimmt und stimmt mit dem Lagrange-Interpolationspolynom überein. Das Berechnungsresultat liefert also gerade: Derivative(DataSet, DERIVATIVE_CENTRAL_5_POINTS).

Dim N = 6
Dim polyOrder = 6
Dim width = 2*N + 1
Dim dirac = (0 # width) : 1 : (0 # width)
Dim coeff = SavitzkyGolayDerivative(dirac, width, polyOrder, 1)[N+1, N+ width]
AmplitudeResponse(coeff)

Berechnet den Amplitudengang des Savitzky-Golay-Ableitungsfilters (für polynomiale Ordnung 6 und Glättungsbreite 13). Hierzu wird die SavitzkyGolayDerivative-Funktion auf einen Dirac-Stoß angewendet. Dies liefert die Übertragungsfunktion des Systems in Form der Filter-Koeffizienten. Mit Hilfe der Filter-Koeffizienten kann durch die AmplitudeResponse-Funktion der Amplitudengang des Filters berechnet werden.

Siehe auch

SavitzkyGolayFilter-Funktion

Derivative-Funktion

Diff-Funktion

Smooth-Funktion

Mean-Funktion

AmplitudeResponse-Funktion

Analyseobjekt Signalanalyse

Option Digitale Filter

SavitzkyGolay Algorithmus

Literatur

[1] Savitzky, A.; Golay, M.J.E.: Smoothing and Differentiation of Data by Simplified Least Squares Procedures. In: Analytical Chemistry, Vol. 36, No. 8, Pages 1627-39. http://pubs.acs.org/doi/abs/10.1021/ac60214a047,1964.

[2] A. Gorry: General least-squares smoothing and differentiation by the convolution (Savitzky–Golay) method. In: Analytical Chemistry, Vol. 62, No. 2, Pages 570-3. http://pubs.acs.org/doi/abs/10.1021/ac00205a007,1990.

Artikel teilen oder als Email versenden:

Diese Beiträge könnten Sie ebenfalls interessieren