Monday 20 February 2017

Gleitender Durchschnitt Savitzky Golay

Diese Klasse enthält Verfahren zum Glätten von zweidimensionalen Daten, d. H. Einer Oberfläche, zf (x, y). Eine Auswahl der Glättungsmethode bietet sich an: Savitzky-Golay-Filterglättung geglättete Daten geglättete Derivate, gleitende mittlere Fensterglättung geglättete Daten Die Klasse enthält auch Methoden für: Interpolation innerhalb der geglätteten Daten Siehe CurveSmooth für das eindimensionale Äquivalent dieser Klasse, dh für die Kurve Glätten Siehe ThreeDimensionalSmooth für die dreidimensionale Äquivalent dieser class. SUMMARY METHODEN öffentlichen SurfaceSmooth (Doppel xData, Doppel YDATA, Doppel ZDATA) public SurfaceSmooth (Doppel ZDATA) public SurfaceSmooth (Doppel xData, Doppel YDATA, Matrix ZDATA) public SurfaceSmooth (Matrix ZDATA ) public SurfaceSmooth (float xData, float YDATA, float ZDATA) public SurfaceSmooth (float ZDATA) public SurfaceSmooth (long xData, lange YDATA, lange ZDATA) public SurfaceSmooth (long ZDATA) public SurfaceSmooth (int xData, int YDATA, int ZDATA) public Zum Seitenanfang Zum Seitenanfang Benutzerinformationen überspringen Private Nachricht senden Private Nachricht senden Beiträge der letzten Zeit anzeigen: Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren / löschen Diesen Beitrag einem Moderator melden Zum Anfang der Seite springen SurfaceSmooth (DoubleData, DoubleData, YDATA, Doppel ZDATA) public SurfaceSmooth (Doppel xData, Doppel YDATA, Matrix ZDATA) public SurfaceSmooth (float xData, YDATA schweben, schwimmen ZDATA) public SurfaceSmooth (long xData, lange YDATA, lange ZDATA) public SurfaceSmooth (int xData, int YDATA, int ZDATA) public SurfaceSmooth (BigDecimal xData, BigDecimal YDATA, BigDecimal ZDATA) public SurfaceSmooth (BigInteger xData, BigInteger YDATA, BigInteger ZDATA) Verbrauch: SurfaceSmooth ssm neue SurfaceSmooth (xData, YDATA, ZDATA) eine Instanz von SurfaceSmooth Erstellt. Die Daten werden als Arrays der x eingegeben. Y und z Werte, Argumente xData. YData und zData. Für eine Fläche, zf (x, y). Die Daten können als Typ double, float, long, int, BigDecimal, BigInteger oder als beliebiger Datentyp über Matrix eingegeben werden. Alle Daten, ausgenommen die Typen BigDecimal und BigInteger, werden vor der Verarbeitung in den Typ double konvertiert. BigInteger wird zu BigDecimal konvertiert. Die gleitende durchschnittliche Fensterglättung wird in beliebiger Präzisionsarithmetik für BigDecimal und BigInteger eingegebene Daten ausgeführt. Savitzky-Golay-Filterung erfolgt in doppelter Genauigkeit Arithmetik für BigDecimal und BigInteger eingegebenen Daten. Die Daten werden vor der Verarbeitung als aufsteigende x - und aufsteigende y-Werte geordnet. Die Reihenfolge der Daten im Matrix-z-Argument zData sollte wie folgt sein: wobei m die Anzahl der x-Werte im Argument xData und n die Anzahl der y-Werte im Argument yData ist. D. H. Das 2D-Array-z-Argument zData sollte als zDatanm dimensioniert werden, wobei n die Anzahl der y yData-Werte und m die Anzahl der x xData-Werte ist. Öffentliches SurfaceSmooth (ZData) Öffentliches SurfaceSmooth (ZData) Öffentliches SurfaceSmooth (ZData) Öffentliches SurfaceSmooth (ZData) Öffentliches SurfaceSmooth (ZData) Öffentliches SurfaceSmooth (ZData) public SurfaceSmooth (BigInteger zData) SurfaceSmooth (SurfaceSmooth) ) Erstellt eine Instanz von SurfaceSmooth. Die Daten werden als Array von z-Werten, Argument zData, eingegeben. Für eine Fläche, zf (x, y). Da keine x - oder y-Werte eingegeben werden, werden die Daten als Daten mit gleichem x - und y-Wertintervall abgetastet. Den m x - Werten sind Werte von 0, 1, 2. bis m -1 zugeordnet. Den n y - Werten sind Werte von 0, 1, 2. bis n -1 zugeordnet. Die Daten können als Typ double, float, long, int, BigDecimal, BigInteger oder als beliebiger Datentyp über Matrix eingegeben werden. Alle Daten, ausgenommen die Typen BigDecimal und BigInteger, werden vor der Verarbeitung in den Typ double konvertiert. BigInteger wird zu BigDecimal konvertiert. Die gleitende durchschnittliche Fensterglättung wird in beliebiger Präzisionsarithmetik für BigDecimal und BigInteger eingegebene Daten ausgeführt. Savitzky-Golay-Filterung erfolgt in doppelter Genauigkeit Arithmetik für BigDecimal und BigInteger eingegebenen Daten. Glättungsverfahren Savitzky-Golay-Filter METHODEN Savitzky-Golay geglättete Kurven public double savitzkyGolay (int sgFilterWidthx, int sgFilterWidthy) public double savitzkyGolay (int sgFilterWidth) public double getsavitzkyGolaySmoothedValues ​​() Verbrauch: smoothedData ssm. savitzkyGolay (sgFilterWidthx, sgFilterWidthy) Diese Methode liefert die geglättete Z-Werte für die über die Konstruktorargumente eingegebenen Daten unter Verwendung eines zweidimensionalen Savitzky-Golay-Filters mit der Breite sgFilterWidthx in der x-Dimension und der Breite sgFilterWidthy-Punkte in der y-Dimension. Der Standardwert für den Grad des Anpassungspolynoms ist 4. Dieser Wert kann mit der setSGpolyDeg-Methode zurückgesetzt werden. Verbrauch: smoothedData ssm. savitzkyGolay (sgFilterWidth) Diese Methode gibt die geglättete z-Werte, für die Daten über den Konstruktor Argumente eingegeben, um eine zweidimensionale Savitzky-Golay-Filter der Breite sgFilterWidth Punkte in der x-Dimension mit und von der gleichen Breite, sgFilterWidth Punkte , In der y-Dimension. Der Standardwert für den Grad des Anpassungspolynoms ist 4. Dieser Wert kann mit der setSGpolyDeg-Methode zurückgesetzt werden. Verwendung: smoothedData ssm. getSavitzkyGolaySmoothedValues ​​() Diese Methode gibt die geglätteten z-Werte zurück, wenn die obige Savitzky-Golay-Filtermethode bereits aufgerufen wurde. (SgFilterWidthx, sgFilterWidthy, m, n) Diese Methode gibt die geglätteten z-Werte und die Werte für die Anzahl der Werte zurück Geglättete Derivate. Für die über die Konstruktorargumente eingegebenen Daten unter Verwendung eines zweidimensionalen Savitzky-Golay-Filters mit der Breite sgFilterWidthx Punkte in der x-Dimension und der Breite sgFilterWidthy-Punkte in der y-Dimension. Die Argumente m und n enthalten die Werte der erforderlichen Ordnungen des Derivats, m und n. Die geglätteten z-Werte werden in der oben genannten Verwendung in smoothedDataPlusDeriv0 zurückgegeben. Werden die Ableitungen in smoothedDataPlusDeriv1 zurückgegeben. Die Summe von m m und n n muss kleiner oder gleich dem Grad des Anpassungspolynoms sein. Der Standardwert dieses Grades ist 4. Dieser Wert kann mit der Methode setSGpolyDegree zurückgesetzt werden. Verwendung: smoothedData ssm. getSavitzkyDerivatives () Diese Methode gibt die geglätteten Savitzky-Golay-Derivate zurück. Die Savitzky-Golay-Derivatmethode muss bereits als die letzte Ableitungsmethode aufgerufen worden sein und die Werte von m und n werden in diesem letzten Aufruf verwendet. Das Savitzky-Golay-Filter public double getSGcoefficients () Verwendung: sgCefficients ssm. getSGcoefficients () Diese Methode liefert die Savitzky-Golay-Filterkoeffizienten, c. Die in der Glättung m w und n w die Längen des Filters in der y - und der x-Richtung sind, m 1 und n 1 die Anzahl der Punkte sind, die dem Datenpunkt vorangehen, auf dem das Filter arbeitet, z k, l. In den y - und x-Richtungen sind und m u und n u die Anzahl der Punkte sind, die dem Datenpunkt, z k, l, in der y - bzw. der x-Richtung folgen. Wenn das Filter als Glättungsfilter s k verwendet wird, ist l der geglättete Wert des Datenpunktes z k, l und die verwendeten c-Werte sind diejenigen, die in der nullten Zeile der zurückgegebenen Matrix sgCefficients gespeichert sind. Jede Zeile von sgCefficients ist das Array von Koeffizienten c m w n w, die linear als die m w Blöcke von Zeilen der Länge n w angeordnet sind. Jede Zeile gibt, wenn sie auf die Daten angewendet wird, die geglätteten m, n-ten Ableitungen. Die nullte Reihe, die Indizes 0,0, gibt die geglättete nullte Ableitung, d. H. Die geglätteten Datenwerte, die zweite Reihe, die Indizes 0,1, die Ableitungen. Das Paar von Indizes, die jeder Zeile zugeordnet sind, kann durch Aufrufen der Methode getSGpolyIndices () erhalten werden, und sie entsprechen den Indizes der Koeffizienten des passenden Polynoms (siehe unten). Der Standardwert des Grades des Anpassungspolynoms ist 4: Dieser Wert kann mit der Methode setSGpolyDegree zurückgesetzt werden. Die Glättungsmethode, savitzkyGolay. Verwendet ein symmetrisches Filter, d. h. m l m u und n l n u. Public int getSGpolyIndices () Verwendung: indicesPairs ssm. getSGpolyIndices () Diese Methode gibt die Paare von Indizes des passenden Polynoms zurück (siehe unmittelbar oben). Der Wert in den Indizes i0 ist der erste Index des i-ten Koeffizienten des Polynoms und ist auch die Energie von y im i-ten Term. Der Wert in den Indizes i1 ist der zweite Index des i-ten Koeffizienten des Polynoms und ist auch die Potenz von x im i-ten Term. Diese zurück Paare sind auch bestellt die Zeilen in der zurück c Matrix anzupassen (siehe savitzkyGolayFilter oben beschriebene Methode public void setSGpolyDegree (int Grad) public int getSGpolyDegree () Verbrauch:. Ssm. setSGpolyDegree (Grad) Diese Methode setzt den Grad der Savitzky - Golay-Anpassungspolynom Der Standardwert ist 4, wenn diese Methode nicht aufgerufen wird Verwendung: deg ssm. getSGpolyDegree () Diese Methode gibt den Grad des Savitzky-Golay-Anpassungspolynoms zurück. Der Standardwert ist 4. Statische Methoden für die Rückgabe eines Savitzky - Golay-Filter public static double savitzkyGolayFilter (int nBackwardx, int nForwardx, int nBackwardy, int nForwardy, int polyDegree) Verbrauch:. sgCoefficients SurfaceSmooth. savitzkyGolayFilter (nBackwardx, nForwardx, nBackwardx, nForwardx, polyDegree) Diese Methode, die Koeffizienten zurückgibt, c eines zwei Dimensionale Savitzky-Golay-Filter der x-Maßlänge, mw nBackWardx nForWardx 1 und y-Maßlänge, nw nBackWardy nForWardy 1, mit einem passenden Polynom von Grad, PolyDegree. Eine Beschreibung der Koeffizienten, c. Ihre Anwendung und ihre Reihenfolge innerhalb der zurückgegebenen zweidimensionalen Array, sgCoefficients. Kann oben gefunden werden. Die Argumente nBackWardx ml und nBackWardy nl sind die Anzahl der Punkte, um den Datenpunkt vorausgehenden, auf der der Filter in Betrieb ist, in der x und y-Abmessungen jeweils und nForWardx mu und nForWardy nu sind die Anzahl der Punkte nach der Datenpunkt in der x und Y-Abmessungen. Public static int filterIndices (int degree) Verwendung: indicesPairs SurfaceSmooth. filterIndices (deg) Diese Methode gibt die Paare von Indizes eines passenden Polynoms von Grad deg zurück. Der Wert in den Indizes i0 ist der erste Index des i-ten Koeffizienten des Polynoms und ist auch die Energie von y im i-ten Term. Der Wert in den Indizes i1 ist der zweite Index des i-ten Koeffizienten des Polynoms und ist auch die Potenz von x im i-ten Term. Ein Beispiel für ein derartiges Anpassungspolynom und seine Koeffizienten ist oben gezeigt. Diese zurückgegebenen Paare sind auch so angeordnet, daß sie zu den Zeilen in der entsprechenden c-Matrix passen. BEWERTUNG DER FENSTER MOVING GLÄTTERN public double MovingAverage (int windowWidthx, int windowWidthy) public double MovingAverage (int Windowwidth) public BigDecimal movingAverageAsBigDecimal (int windowWidthx, int windowWidthy) public BigDecimal movingAverageAsBigDecimal (int Windowwidth) public double getMovingAverageValues ​​() public BigDecimal getMovingAverageValuesAsBigDecimal () Verbrauch: smoothedData ssm. movingAverage (windowWidthx, windowWidthy) Diese Methode gibt die geglättete z-Werte, für die Daten über den Konstruktor Argumente eingegeben, einen gleitenden Durchschnitt Fenster von nw Argument windowWidthx Punkte in der x-Dimension mit und von mw Argument windowWidthy Punkte in der y-Dimension : Sk, l ist der geglättete Wert des Datenpunktes zk, l. Der eingegebene Wert für die Anzahl der Punkte in den Fenstern wird auf die nächsthöhere ungerade Zahl eingestellt, wenn eine gerade Zahl eingegeben wurde. Die Werte von nl. N u. M l und m u werden in geeigneter Weise abgeschnitten, wenn sie nahe bei den Datenextremen unter oder oberhalb des ersten bzw. letzten Datenpunktes fallen. Die geglätteten Daten werden als Typ double zurückgegeben. Verwendung: smoothedData ssm. movingAverage (windowWidth) Wie unmittelbar oben für movingAverage (windowWidthx, windowWidthy) mit einem quadratischen Fenster, d. H. WindowWidthx windowWidth und windowWidthy windowWidth. Usage: smoothedData ssm. movingAverageAsBigDecimal (windowWidthx, windowWidthy) Wie oben für MovingAverage (windowWidthx, windowWidthy) mit der Ausnahme, dass die geglätteten Daten als Typ BigDecimal zurückgegeben. Wenn die Daten als Typ BigDecimal oder BigInteger eingegeben wurden, erfolgt die Glättung in beliebiger Arithmetik. Verbrauch: smoothedData ssm. movingAverageAsBigDecimal (Windowwidth) Wie oben für MovingAverage (windowWidthx, windowWidthy) mit einem quadratischen Fenster, das heißt windowWidthx Window und windowWidthy Window. Und mit der Ausnahme, dass die geglätteten Daten als Typ BigDecimal zurückgegeben werden. Wenn die Daten als Typ BigDecimal oder BigInteger eingegeben wurden, erfolgt die Glättung in beliebiger Arithmetik. Verwendung: smoothedData ssm. getMovingAverageValues ​​() Diese Methode gibt die geglätteten z-Werte zurück, wenn die obige Methode mit dem gleitenden Mittelwert bereits aufgerufen wurde. Verwendung: smoothedData ssm. getMovingAverageValuesAsBigDecimal () Diese Methode gibt die geglätteten z-Werte zurück, wenn die obige Methode mit dem gleitenden Mittelwert bereits aufgerufen wurde. Die geglätteten Werte werden als Typ BigDecimal zurückgegeben. EXTENT OF SMOOTHING public double extentSavitzkyGolay () public double extentMovingAverage () Diese Methoden geben den Wert der Funktion zurück, wobei zi, j der ursprüngliche z-Wert des i-ten, j-ten Datenpunkts ist, si, j sein geglätteter Wert, z min Der minimale Wert von zi, j ist. Z max der Maximalwert der z i, j und n die Anzahl der x-Koordinaten und m die Anzahl der y-Koordinaten ist. Verwendung: Umfang ssm. extentSavitzkyGolay () In diesem Verfahren s i, j ist der Savitzky-Golay geglättete Wert. Verwendung: Umfang ssm. extentMovingAverage () In diesem Verfahren s i, j ist sein gleitender gleitender Wert. INTERPOLATION public double interpolateSavitzkyGolay (Doppel xi, Doppel yi) public double interpolateMovingAverage (Doppel xi, Doppel yi) Verbrauch: zi ssm. interpolateSavitzkyGolay (xi, yi) Diese Methode gibt den interpolierten Wert von z zi für das Argument x geliefert xi und y Argument Yi-Werte für die Savitzky-Golay-geglätteten Daten. Das Interpolationsverfahren verwendet die BiCubicSpline-Klasse. Eine Savitzky-Golay-Glättungsmethode muss zuvor aufgerufen worden sein. Verwendung: zi ssm. interpolateMovingAverage (xi, yi) Diese Methode gibt den interpolierten Wert von z zi für die angegebenen x-Argumente xi und y-Argumente yi für die gleitenden gleitenden gleitenden Daten zurück. Das Interpolationsverfahren verwendet die BiCubicSpline-Klasse. Eine gleitende Glättungsmethode muss zuvor aufgerufen worden sein. Savitzky-Golay public double plotSavitzkyGolayX (Doppel yValue) public double plotSavitzkyGolayX (int yIndex) public double plotSavitzkyGolayY (Doppel xValue) public double plotSavitzkyGolayY (int xIndex) Verbrauch: ssm. plotSavitzkyGolayX (yValue) Diese Methode zeigt eine graphische Darstellung der sowohl die Originaldaten und Die Savitzky-Golay geglättete Daten für einen Schnitt durch die Oberfläche parallel zur x-Achse bei einem Wert y, der als Argument yValue geliefert wurde. Der Wert yValue. Muss einer der im Array yData über einen Constructor bereitgestellten Werte sein. Verwendung: ssm. plotSavitzkyGolayX (yIndex) Diese Methode zeigt sowohl die Originaldaten als auch die Savitzky-Golay-geglätteten Daten für einen Schnitt durch die parallel zur x-Achse liegende Fläche mit dem Wert y an, dessen Index im Array yData übergeben wird Ein Konstruktor ist die Ganzzahl, die als Argument yIndex geliefert wird. NB Indizes beginnen bei 0 Verbrauch: ssm. plotSavitzkyGolayY (xValue) Diese Methode zeigt eine graphische Darstellung der sowohl die Originaldaten und dem Savitzky-Golay geglätteten Daten für einen Schnitt durch die Oberfläche parallel zur y-Achse bei einem Wert von x geliefert als Das Argument xValue. Der Wert, xValue. Muss einer der im Array xData über einen Constructor bereitgestellten Werte sein. Verwendung: ssm. plotSavitzkyGolayY (xIndex) Diese Methode zeigt sowohl die Originaldaten als auch die Savitzky-Golay-geglätteten Daten für einen Schnitt durch die parallel zur y-Achse liegende Fläche mit dem Wert x an, dessen Index in der über x eingetragenen Matrix xData liegt Ein Konstruktor ist die Ganzzahl, die als Argument xIndex geliefert wird. NB Indizes beginnen bei 0. Gleitender Durchschnitt public double plotMovingAverageX (Doppel yValue) public double plotMovingAverageX (int yIndex) public double plotMovingAverageY (Doppel xValue) public double plotMovingAverageY (int xIndex) Verbrauch: ssm. plotMovingAverageX (yValue) Diese Methode zeigt eine graphische Darstellung von Sowohl die ursprünglichen Daten als auch die verschobenen durchschnittlichen geglätteten Daten für einen Schnitt durch die Oberfläche parallel zur x-Achse bei einem Wert y, der als das Argument yValue geliefert wird. Der Wert yValue. Muss einer der im Array yData über einen Constructor bereitgestellten Werte sein. Verwendung: ssm. plotMovingAverageX (yIndex) Diese Methode zeigt sowohl die Originaldaten als auch die verschobenen geglätteten Daten für einen Schnitt durch die parallel zur x-Achse liegende Fläche mit dem Wert y an, dessen Index im Array yData über a eingegeben wurde Konstruktor ist die Ganzzahl, die als Argument yIndex geliefert wird. NB-Indizes beginnen bei 0. Verwendung: ssm. plotMovingAverageY (xValue) Diese Methode zeigt eine graphische Darstellung sowohl der ursprünglichen Daten als auch der verschobenen geglätteten Daten für einen Schnitt durch die Oberfläche parallel zur y-Achse bei einem Wert von x an Argument xValue. Der Wert, xValue. Muss einer der im Array xData über einen Constructor bereitgestellten Werte sein. Verwendung: ssm. plotMovingAverageY (xIndex) Mit dieser Methode werden sowohl die Originaldaten als auch die verschobenen geglätteten Daten für einen Schnitt durch die parallel zur y-Achse liegende Fläche mit dem Wert x angezeigt, dessen Index im Array xData über a eingegeben wurde Konstruktor ist die Ganzzahl, die als Argument xIndex geliefert wird. NB-Indizes beginnen bei 0. ANDERE KLASSEN, DIE DURCH DIESE KLASSEN VERWENDET WERDEN, entfernen kurzfristige Variationen oder quotnoisequot, um die wichtige zugrundeliegende unverfälschte Form der Daten zu enthüllen. Igoracutes Smooth Betrieb führt Box, quotbinomialquot, und Savitzky-Golay Glättung. Die verschiedenen Glättungsalgorithmen falten die Eingangsdaten mit unterschiedlichen Koeffizienten. Glättung ist eine Art Tiefpassfilter. Die Art der Glättung und die Menge der Glättung verändert den Filterfrequenz-Frequenzgang: Moving Average (auch bekannt als Box Smoothing) Die einfachste Form der Glättung ist der mittlere Mittelwert, der einfach jeden Datenwert durch den Durchschnitt der benachbarten Werte ersetzt. Um ein Verschieben der Daten zu vermeiden, empfiehlt es sich, die gleiche Anzahl von Werten vor und nach dem Durchschnittswert zu berechnen. In der Gleichung wird der gleitende Durchschnitt folgendermaßen berechnet: Ein anderer Begriff für diese Art der Glättung ist ein quoteschleifendes Durchschnittsquot, ein Quotschloß-Glättungsquot oder ein Quottend-Glättungsquot. Sie kann durch Falten der Eingangsdaten mit einem kastenförmigen Puls mit 2M1 Werten, die alle gleich 1 (2M1) sind, implementiert werden. Wir nennen diese Werte die quotcoefficientsquot der quotsmoothing kernelquot: Binomiale Glättung Die binomische Glättung ist ein Gaußscher Filter. Es faltet Ihre Daten mit normalisierten Koeffizienten aus Pascalacutes Dreieck auf einem Niveau gleich dem Glättungsparameter abgeleitet. Der Algorithmus stammt aus einem Artikel von Marchand und Marmet (1983). Savitzky-Golay Glättung Die Savitzky-Golay-Glättung nutzt einen anderen Satz von vorberechneten Koeffizienten, die auf dem Gebiet der Chemie populär sind. Es ist eine Art von Least Squares Polynom Glättung. Der Betrag der Glättung wird durch zwei Parameter gesteuert: die Polynomordnung und die Anzahl der Punkte, die verwendet werden, um jeden geglätteten Ausgangswert zu berechnen. Referenzen Marchand, P. und L. Marmet, Binomialer Glättungsfilter: Ein Weg, um einige Fallstricke der kleinsten quadratischen Polynomglättung zu vermeiden, Rev. Sci. Instrument . 54. 1034-41, 1983. Savitzky, A. und M. J.E. Golay, Glättung und Differenzierung von Daten durch vereinfachte Verfahren der kleinsten Fehlerquadrate, Analytische Chemie. 36. 1627-1639, 1964.Savitzky Golay Filter Beschreibung Der SavitzkyGolayFilter implementiert einen Savitzky-Golay-Filter. Der SavitzkyGolayFilter ist Teil der Vorverarbeitungsmodule. Ein Beispiel eines Signals (Sinuswelle bei 0,1 Hz, 0,5 Hz, 1 Hz, 2 Hz, 4 Hz und 8 Hz), gefiltert mit einem Savitzky-Golay-Filter. Die Anzahl der linken und rechten Handpunkte für den Filter wurde auf 15 gesetzt. Das rote Signal ist das rohe Signal, und das grüne Signal ist das gefilterte Signal. Das Signal und die gefilterten Daten wurden mit dem folgenden Beispielcode erzeugt. Beachten Sie, dass der Filter die meisten der Rauschen entfernt, um die Sinuswelle, während die Aufrechterhaltung der höheren Frequenzsignale. Andere Filtertechniken, wie beispielsweise ein gleitender Durchschnittsfilter, würden üblicherweise die höherfrequenten Signale flachlegen. SavitzkyGolayFilterExampleImage1.jpg Vorteile Das SavitzkyGolay-Glättungsfilter ist ein Filter, der im Wesentlichen eine lokale Polynomregression (vom Grad k) auf einer Reihe von Werten (von mindestens k1 Punkten, die in der Reihe gleich beabstandet behandelt werden) durchführt, um den geglätteten Wert zu bestimmen Für jeden Punkt. Der Hauptvorteil dieses Ansatzes besteht darin, dass er dazu neigt, Merkmale der Verteilung zu bewahren, wie relative Maxima, Minima und Breiten, die üblicherweise durch andere benachbarte Mittelungstechniken abgeflacht werden (wie zum Beispiel ein gleitender Durchschnittsfilter). Nachteile Der Hauptnachteil des SavitzkyGolayFilters besteht darin, dass normalerweise eine kleine Menge an Experimenten erforderlich ist, um die geeigneten Filterwerte zu finden, die erforderlich sind, um ein bestimmtes Signal am besten zu filtern. Beispielcode GRT SavitzkyGolayFilter Beispiel Dieses Beispiel zeigt, wie das GRT SavitzkyGolayFilter PreProcessing Module erstellt und verwendet wird. Der SavitzkyGolayFilter implementiert ein Savitzky-Golay Filtermittelfilter. In diesem Beispiel erstellen wir eine Instanz eines SavitzkyGolayFilters und verwenden diese, um einige Dummy-Daten zu filtern, die aus einer Serie von Sinuswellen (mit steigender Frequenz im Bereich von 0,1 Hz bis 8 Hz) erzeugt werden. Das Testsignal und die gefilterten Signale werden dann in einer Datei gespeichert (so können Sie die Ergebnisse in Matlab, Excel usw. notieren, falls erforderlich). Dieses Beispiel zeigt Ihnen, wie Sie: - Erstellen Sie eine neue SavitzkyGolayFilter-Instanz mit einer bestimmten linken und rechten Punktgröße für ein 1-dimensionales Signal - Filtern Sie einige Daten mit dem SavitzkyGolayFilter - Speichern Sie die SavitzkyGolayFilter-Einstellungen in einer Datei - Laden Sie die SavitzkyGolayFilter-Einstellungen aus einer Datei Umfassen quotGRT. hquot mit dem Namensraum GRT int main 40 int argc. Const char argv 91 93 41 123 Erstellen Sie eine neue Instanz eines SavitzkyGolayFilter-Filters, indem Sie die Anzahl der linken und rechten Handpunkte auf 15 setzen. SavitzkyGolayFilter sgf 40 15. 15 41 Erstellen Sie einige Variablen, die dazu beitragen, die Signaldaten const zu generieren. UINT numSeconds 60 Die Zahl Von Sekunden, die wir generieren wollen double t 0 Dies verfolgt die Zeit double tStep 1.0 1000.0 Dies ist, wie viel die Zeit bei jeder Iteration in der for loop double freq aktualisiert wird 0 Speichert die Frequenzkarte lt UINT. Double gt freqRates Hält die Frequenzraten map lt UINT. Doppelt gt. Iterator iter Ein Iterator für die Frequenzratenkarte Zufällig zufällig Hinzufügen der Frequenzraten Der erste Wert ist die Zeit in Sekunden und der zweite Wert ist die Frequenz, die zu diesem Zeitpunkt gesetzt werden sollte freqPlätze 91 0 93 0,1 freq Preise 91 10 93 0,5 freq Preise 91 20 93 1 freqpreise 91 30 93 2 freqPrüfungen 91 40 93 4 freqPreise 91 50 93 8 Erstellen und öffnen Sie eine Datei, um die Datei für die Datenflussdatei zu speichern. Öffnen Sie 40 quotSavitzkyGolayFilterData. txtquot. Iostream Out 41 Generieren Sie das Signal und filtern Sie die Daten für 40 UINT i 0 i lt numSeconds 1000 i 41 123 Prüfen Sie, ob wir die Freq-Rate auf den nächsten Wert iter freqRates aktualisieren sollten. Finden Sie 40 i 1000 41 wenn 40 iter freqRates. Ende 40 41 41 123 Setzen Sie den neuen Frequenzwert freq iter - gt second 125 Erzeugen Sie das Signal Doppelsignal sin 40 t TWOPI freq 41 random. GetRandomNumberGauss 40 0. 0.02 41 Filtern des Signals double filteredValue sgf. Filter 40-Signal 41 Schreiben Sie das Signal und die gefilterten Daten in die Datei file ltlt-Signal ltlt t ltlt filteredValue ltlt endl Aktualisieren t t tStep 125 Schließen Sie die Datei. Close 40 41 Speichern Sie die Filtereinstellungen in einer Datei sgf. SaveSettingsToFile 40 quotSavitzkyGolayFilterSettings. txtquot 41 Wir können die Einstellungen später bei Bedarf sgf laden. LoadSettingsFromFile 40 quotSavitzkyGolayFilterSettings. txtquot 41 Rückkehr EXITSUCCESS 125


No comments:

Post a Comment