Monday 27 November 2017

Moving Average Savitzky Golay


Savitzky Golay Filter Beschreibung Der SavitzkyGolayFilter realisiert 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, wie etwa relative Maxima, Minima und Breite, zu bewahren, die üblicherweise durch andere benachbarte Mittelungstechniken abgeflacht werden (wie beispielsweise 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 wird bei jeder Iteration in der for-Schleife double freq aktualisiert werden 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 return EXITSUCCESS 125Smoothing entfernt 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.Dokumentation Dieses Beispiel zeigt, wie gleitende mittlere Filter und Resampling verwendet werden, um die Auswirkungen von periodischen Komponenten der Tageszeit auf die stündlichen Temperaturmessungen zu isolieren und unerwünschte Leitungsgeräusche aus einer offenen Spannungsmessung zu entfernen. Das Beispiel zeigt auch, wie die Pegel eines Taktsignals zu glätten sind, während die Kanten durch Verwendung eines Medianfilters bewahrt werden. Das Beispiel zeigt auch, wie ein Hampel-Filter verwendet wird, um große Ausreißer zu entfernen. Motivation Glättung ist, wie wir wichtige Muster in unseren Daten zu entdecken, während Sie Dinge, die unwichtig sind (d. H. Rauschen). Wir verwenden Filter, um diese Glättung durchzuführen. Das Ziel der Glättung ist es, langsame Änderungen im Wert zu produzieren, so dass seine einfacher zu sehen, Trends in unseren Daten. Manchmal, wenn Sie Eingangsdaten untersuchen, können Sie die Daten glatt machen, um einen Trend im Signal zu sehen. In unserem Beispiel haben wir eine Reihe von Temperaturmessungen in Celsius genommen jede Stunde am Logan Flughafen für den gesamten Monat Januar 2011. Beachten Sie, dass wir visuell sehen können, die Wirkung, die die Tageszeit auf die Temperaturwerte hat. Wenn Sie sich nur für die tägliche Temperaturschwankung im Laufe des Monats interessieren, tragen die stündlichen Fluktuationen nur zu Lärm bei, was die täglichen Variationen schwer unterscheiden kann. Um den Effekt der Tageszeit zu entfernen, möchten wir nun unsere Daten mit einem gleitenden Mittelfilter glätten. Ein Moving Average Filter In seiner einfachsten Form nimmt ein gleitender Durchschnittsfilter der Länge N den Durchschnitt jeder N aufeinanderfolgenden Samples der Wellenform an. Um einen gleitenden Mittelwertfilter auf jeden Datenpunkt anzuwenden, konstruieren wir unsere Koeffizienten unseres Filters, so dass jeder Punkt gleich gewichtet ist und 124 zum Gesamtdurchschnitt beiträgt. Dies gibt uns die durchschnittliche Temperatur über jeden Zeitraum von 24 Stunden. Filterverzögerung Beachten Sie, dass der gefilterte Ausgang um etwa zwölf Stunden verzögert wird. Dies ist auf die Tatsache zurückzuführen, dass unser gleitender Durchschnittsfilter eine Verzögerung hat. Jedes symmetrische Filter der Länge N hat eine Verzögerung von (N-1) 2 Abtastungen. Wir können diese Verzögerung manuell berücksichtigen. Extrahieren von Durchschnittsdifferenzen Alternativ können wir auch das gleitende Mittelfilter verwenden, um eine bessere Schätzung zu erhalten, wie die Tageszeit die Gesamttemperatur beeinflusst. Dazu werden zuerst die geglätteten Daten von den stündlichen Temperaturmessungen subtrahiert. Dann segmentieren Sie die differenzierten Daten in Tage und nehmen Sie den Durchschnitt über alle 31 Tage im Monat. Extrahieren von Peak Envelope Manchmal möchten wir auch eine glatt variierende Schätzung haben, wie sich die Höhen und Tiefen unseres Temperatursignals täglich ändern. Um dies zu erreichen, können wir die Hüllkurvenfunktion verwenden, um extreme Höhen und Tiefen zu verbinden, die über eine Untermenge der 24-Stundenperiode erkannt werden. In diesem Beispiel stellen wir sicher, dass es mindestens 16 Stunden zwischen jedem extrem hohen und extrem niedrigen Niveau gibt. Wir können auch ein Gefühl dafür, wie die Höhen und Tiefen sind Trends, indem sie den Durchschnitt zwischen den beiden Extremen. Weighted Moving Average Filter Andere Arten von Moving Average Filtern gewichten nicht jede Probe gleichermaßen. Ein weiteres gemeinsames Filter folgt der Binomialexpansion von (12,12) n Dieser Filtertyp approximiert eine Normalkurve für große Werte von n. Es ist nützlich zum Herausfiltern von Hochfrequenzrauschen für kleine n. Um die Koeffizienten für das Binomialfilter zu finden, falten Sie 12 12 mit sich selbst und konvergieren dann iterativ den Ausgang mit 12 12 eine vorgeschriebene Anzahl von Malen. Verwenden Sie in diesem Beispiel fünf Gesamt-Iterationen. Ein anderer Filter, der dem Gaußschen Expansionsfilter ähnlich ist, ist der exponentiell gleitende Durchschnittsfilter. Diese Art des gewichteten gleitenden Durchschnittsfilters ist einfach zu konstruieren und erfordert keine große Fenstergröße. Sie passen einen exponentiell gewichteten gleitenden Durchschnittsfilter durch einen Alpha-Parameter zwischen null und eins an. Ein höherer Wert von alpha wird weniger Glättung haben. Untersuche die Messwerte für einen Tag. Wähle dein Land

No comments:

Post a Comment