Exponentiell Bewegend Durchschnittlich Filter Design


Exponentieller Filter Diese Seite beschreibt eine exponentielle Filterung, die einfachste und beliebteste Filter. Dies ist Teil des Bereichs Filterung, die Teil eines Leitfadens zur Fehlererkennung und Diagnose ist. Übersicht, Zeitkonstante und Analogäquivalent Der einfachste Filter ist der Exponentialfilter. Es hat nur einen Abstimmparameter (außer dem Stichprobenintervall). Es erfordert die Speicherung von nur einer Variablen - die vorherige Ausgabe. Es handelt sich um einen IIR (autoregressiven) Filter - die Effekte einer Eingangsänderung zerfallen exponentiell, bis die Grenzen von Displays oder Computerarithmetik es ausblenden. In verschiedenen Disziplinen wird die Verwendung dieses Filters auch als 8220exponentielle Glättung8221 bezeichnet. In einigen Disziplinen wie Investitionsanalyse wird der Exponentialfilter als 8220Exponentially Weighted Moving Average8221 (EWMA) oder nur 8220Exponential Moving Average8221 (EMA) bezeichnet. Dies missbraucht die traditionelle ARMA 8220moving average8221 Terminologie der Zeitreihenanalyse, da es keine Eingangshistorie gibt, die verwendet wird - nur die aktuelle Eingabe. Es ist die diskrete Zeitäquivalent der 8220 ersten Ordnung lag8221, die üblicherweise in der analogen Modellierung von Dauerregelungssystemen verwendet wird. In elektrischen Schaltungen ist ein RC-Filter (Filter mit einem Widerstand und einem Kondensator) eine Verzögerung erster Ordnung. Bei der Betonung der Analogie zu analogen Schaltungen ist der Einzelabstimmungsparameter die 8220time constant8221, die gewöhnlich als Kleinbuchstabe Griechischer Buchstabe Tau () geschrieben wird. Tatsächlich entsprechen die Werte bei den diskreten Abtastzeiten genau der äquivalenten kontinuierlichen Zeitverzögerung mit der gleichen Zeitkonstante. Die Beziehung zwischen der digitalen Implementierung und der Zeitkonstante ist in den nachstehenden Gleichungen dargestellt. Exponentielle Filtergleichungen und Initialisierung Das Exponentialfilter ist eine gewichtete Kombination der vorherigen Schätzung (Ausgabe) mit den neuesten Eingangsdaten, wobei die Summe der Gewichte gleich 1 ist, so dass die Ausgabe mit dem Eingang im stationären Zustand übereinstimmt. Nach der bereits eingeführten Filternotation ist y (k) ay (k-1) (1-a) x (k) wobei x (k) die Rohaufnahme zum Zeitpunkt Schritt ky (k) die gefilterte Ausgabe zum Zeitschritt ka ist Ist eine Konstante zwischen 0 und 1, normalerweise zwischen 0,8 und 0,99. (A-1) oder a wird manchmal die 8220smoothing constant8221 genannt. Bei Systemen mit einem festen Zeitschritt T zwischen den Samples wird die Konstante 8220a8221 nur dann vereinfacht und gespeichert, wenn der Applikationsentwickler einen neuen Wert der gewünschten Zeitkonstante angibt. Bei Systemen mit Datenabtastung in unregelmäßigen Abständen muss bei jedem Zeitschritt die Exponentialfunktion oben verwendet werden, wobei T die Zeit seit dem vorherigen Sample ist. Der Filterausgang wird in der Regel initialisiert, um dem ersten Eingang zu entsprechen. Wenn sich die Zeitkonstante 0 nähert, geht a auf Null, so dass keine Filterung 8211 vorhanden ist, so ist die Ausgabe gleich der neuen Eingabe. Da die Zeitkonstante sehr groß wird, nähert sich 1 1, so dass neue Eingabe fast ignoriert wird 8211 sehr schwere Filterung. Die obige Filtergleichung kann in das folgende Prädiktor-Korrektor-Äquivalent umgeordnet werden: Diese Form macht es deutlicher, dass die variable Schätzung (Ausgabe des Filters) als unverändert von der vorherigen Schätzung y (k-1) plus einem Korrekturterm auf der Grundlage vorhergesagt wird Auf die unerwartete 8220innovation8221 - die Differenz zwischen dem neuen Eingang x (k) und der Vorhersage y (k-1). Diese Form ist auch das Ergebnis der Ableitung des Exponentialfilters als einfacher Spezialfall eines Kalman-Filters. Was die optimale Lösung für ein Schätzproblem mit einem bestimmten Satz von Annahmen ist. Schrittantwort Eine Möglichkeit, den Betrieb des Exponentialfilters zu visualisieren, besteht darin, seine Antwort über die Zeit auf eine Stufeneingabe zu zeichnen. Das heißt, beginnend mit dem Filtereingang und - ausgang bei 0 wird der Eingabewert plötzlich auf 1 geändert. Die daraus resultierenden Werte sind unten aufgetragen: In der obigen Kurve wird die Zeit durch die Filterzeitkonstante Tau geteilt, so dass Sie leichter vorhersagen können Die Ergebnisse für einen beliebigen Zeitraum für jeden Wert der Filterzeitkonstante. Nach einer Zeit gleich der Zeitkonstante steigt der Filterausgang auf 63,21 seines Endwertes an. Nach einer Zeit gleich 2 Zeitkonstanten steigt der Wert auf 86,47 seines Endwertes. Die Ausgänge nach mal gleich 3,4 und 5 Zeitkonstanten sind 95,02, 98,17 bzw. 99,33 des Endwertes. Da der Filter linear ist, bedeutet dies, dass diese Prozentsätze für jede Größe der Stufenänderung verwendet werden können, nicht nur für den hier verwendeten Wert von 1. Obwohl die Stufenreaktion in der Theorie eine unendliche Zeit hat, von einem praktischen Standpunkt aus, denken Sie an den exponentiellen Filter als 98 bis 99 8220done8221, der nach einer Zeit gleich 4 bis 5 Filterzeitkonstanten reagiert. Variationen des Exponentialfilters Es gibt eine Variation des Exponentialfilters, der so genannte 8220nonlineare Exponentialfilter8221 Weber, 1980. beabsichtigt, das Rauschen innerhalb einer bestimmten Amplitude von 8220 typischen8221 stark zu filtern, aber dann schneller auf größere Veränderungen zu reagieren. Copyright 2010 - 2013, Greg Stanley Teilen Sie diese Seite: Dokumentation Dieses Beispiel zeigt, wie man gleitende durchschnittliche Filter und Resampling verwendet, um die Wirkung von periodischen Komponenten der Tageszeit auf stündliche Temperaturablesungen zu isolieren sowie unerwünschte Liniengeräusche von einem offenen zu entfernen - Lopping-Spannungsmessung Das Beispiel zeigt auch, wie man die Pegel eines Taktsignals glättet, während die Kanten mit einem Medianfilter erhalten bleiben. Das Beispiel zeigt auch, wie man einen Hampelfilter benutzt, um große Ausreißer zu entfernen. Motivation Glättung ist, wie wir wichtige Muster in unseren Daten entdecken, während wir Dinge entfernen, die unwichtig sind (d. h. Lärm). Wir verwenden Filterung, um diese Glättung durchzuführen. Das Ziel der Glättung ist es, langsame Wertänderungen zu erzeugen, so dass es einfacher ist, Trends in unseren Daten zu sehen. Manchmal, wenn Sie Eingabedaten untersuchen, können Sie die Daten glätten, um einen Trend im Signal zu sehen. In unserem Beispiel haben wir einen Satz von Temperaturmessungen in Celsius, die jede Stunde am Logan Airport für den ganzen Monat Januar 2011 genommen werden. Beachten Sie, dass wir visuell sehen können, dass die Tageszeit auf die Temperaturablesung hat. Wenn Sie sich nur für die tägliche Temperaturvariation über den Monat interessieren, tragen die stündlichen Schwankungen nur zu Lärm, was die täglichen Variationen schwer zu erkennen vermag. Um die Wirkung der Tageszeit zu beseitigen, möchten wir gern unsere Daten mit einem gleitenden Durchschnittsfilter verarbeiten. Ein beweglicher Durchschnittsfilter In seiner einfachsten Form nimmt ein gleitender Durchschnittsfilter der Länge N den Durchschnitt aller N aufeinanderfolgenden Abtastwerte der Wellenform an. Um einen gleitenden Durchschnittsfilter an 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 24 Stunden Zeitraum. Filterverzögerung Beachten Sie, dass der gefilterte Ausgang um etwa zwölf Stunden verzögert wird. Dies ist aufgrund der Tatsache, dass unsere gleitenden durchschnittlichen Filter hat eine Verzögerung. Jeder symmetrische Filter der Länge N hat eine Verzögerung von (N-1) 2 Proben. Wir können diese Verzögerung manuell berücksichtigen. Extrahieren von durchschnittlichen Unterschieden Alternativ können wir auch den gleitenden Durchschnittsfilter verwenden, um eine bessere Schätzung zu erhalten, wie die Tageszeit die Gesamttemperatur beeinflusst. Um dies zu tun, subtrahieren Sie zuerst die geglätteten Daten aus den stündlichen Temperaturmessungen. Dann segmentieren Sie die differenzierten Daten in Tage und nehmen den Durchschnitt über alle 31 Tage im Monat. Extrahieren von Peak-Hüllkurven Manchmal möchten wir auch gern eine abweichende Schätzung haben, wie sich die Höhen und Tiefen unseres Temperatursignals täglich ändern. Um dies zu tun, können wir die Hüllkurvenfunktion verwenden, um extreme Höhen und Tiefen zu verbinden, die über eine Teilmenge des 24-Stunden-Zeitraums erkannt werden. In diesem Beispiel stellen wir sicher, dass es mindestens 16 Stunden zwischen jedem extrem hohen und extrem niedrigen 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 gleitenden durchschnittlichen Filtern nicht Gewicht jeder Probe gleichmäßig. Ein weiterer gemeinsamer Filter folgt der Binomialexpansion von (12,12) n Diese Art von Filter nähert sich einer Normalkurve für große Werte von n an. Es ist nützlich für das Herausfiltern von Hochfrequenzrauschen für kleine n. Um die Koeffizienten für den Binomialfilter zu finden, fliegen Sie 12 12 mit sich selbst und dann iterativ die Ausgabe mit 12 12 eine vorgeschriebene Anzahl von Malen. Verwenden Sie in diesem Beispiel fünf vollständige Iterationen. Ein weiterer Filter, der dem Gaußschen Expansionsfilter etwas ähnelt, ist der exponentielle gleitende Mittelfilter. Diese Art von gewichteten gleitenden durchschnittlichen Filter ist einfach zu konstruieren und erfordert keine große Fenstergröße. Sie setzen einen exponentiell gewichteten gleitenden Durchschnittsfilter um einen Alpha-Parameter zwischen Null und Eins ein. Ein höherer Wert von Alpha wird weniger Glättung haben. Vergrößere die Lesungen für einen Tag. Wählen Sie Ihr Land aus, in dem es möglich ist, einen gleitenden Durchschnitt in C zu implementieren, ohne die Notwendigkeit eines Fensters von Proben, die ich gefunden habe, dass ich ein bisschen optimieren kann, indem ich eine Fenstergröße wähle, die eine Kraft von zwei ist, um Bit-Verschiebung statt zu teilen, aber Ich brauche keinen Puffer. Gibt es eine Möglichkeit, ein neues gleitendes durchschnittliches Ergebnis nur als eine Funktion des alten Ergebnisses auszudrücken und das neue Sample Definieren Sie ein Beispiel gleitender Durchschnitt, über ein Fenster von 4 Samples: Add new sample e: Ein gleitender Durchschnitt kann rekursiv implementiert werden , Aber für eine genaue Berechnung des gleitenden Durchschnitts müssen Sie sich an die älteste Eingabe Probe in der Summe (dh die a in Ihrem Beispiel) erinnern. Für eine Länge N gleitenden Durchschnitt berechnen Sie: wobei yn das Ausgangssignal ist und xn das Eingangssignal ist. Gl. (1) kann rekursiv geschrieben werden, also musst du dich immer an die Probe xn-N erinnern, um zu berechnen (2). Wie von Conrad Turner hervorgehoben, können Sie stattdessen ein (unendlich langes) exponentielles Fenster verwenden, mit dem Sie die Ausgabe nur aus der Vergangenheit und dem aktuellen Eingang berechnen können. Dies ist jedoch kein Standard (ungewichtet) gleitender Durchschnitt, sondern exponentiell Gewichteter gleitender Durchschnitt, wo Proben in der Vergangenheit ein kleineres Gewicht bekommen, aber (zumindest in der Theorie) vergisst du niemals etwas (die Gewichte werden in der Vergangenheit immer kleiner und kleiner). Ich habe einen gleitenden Durchschnitt ohne Einzelposten-Speicher für ein GPS-Tracking-Programm, das ich geschrieben habe. Ich fange mit 1 Probe an und teile mit 1, um die aktuelle avg zu bekommen. Ich füge dann eine Probe hinzu und teile mit 2 auf die aktuelle avg. Das geht weiter, bis ich die Länge des Durchschnitts erreicht habe. Jedes Mal danach füge ich die neue Probe hinzu, bekomme den Durchschnitt und beseitige diesen Durchschnitt von der Summe. Ich bin kein Mathematiker, aber das schien ein guter Weg, es zu tun. Ich dachte, es würde den Magen eines echten Mathe-Kerls drehen, aber es stellt sich heraus, dass es eine der akzeptierten Möglichkeiten ist, es zu tun. Und es geht gut Denken Sie daran, dass je höher Ihre Länge desto langsamer ist es, was Sie folgen wollen. Das mag die meiste Zeit nicht ausmachen, aber wenn man den Satelliten folgt, wenn man langsam ist, könnte der Weg weit von der aktuellen Position entfernt sein und es wird schlecht aussehen. Du hättest eine Lücke zwischen dem Sat und den hinteren Punkten. Ich wählte eine Länge von 15 aktualisiert 6 mal pro Minute, um ausreichende Glättung zu bekommen und nicht zu weit von der tatsächlichen Sat-Position mit den geglätteten Pfad-Punkten zu bekommen. Antwortete 16. November 16 um 23:03 initialize total 0, count0 (jedes Mal, wenn du einen neuen Wert sehe, dann eine Eingabe (scanf), man add totalnewValue, ein Inkrement (count), ein divide average (totalcount) Dies wäre ein gleitender Durchschnitt über Alle Eingänge Um den Durchschnitt über nur die letzten 4 Eingänge zu berechnen, würde es 4 Eingangsvariablen erfordern, vielleicht jede Eingabe in einen älteren Eingabevariablen kopieren und dann den neuen gleitenden Durchschnitt berechnen, als Summe der 4 Eingangsvariablen, geteilt durch 4 (rechte Verschiebung 2 wäre Gut, wenn alle Eingänge waren positiv, um die durchschnittliche Berechnung beantwortet Feb 3 15 um 4:06 Das wird tatsächlich berechnen den Gesamtdurchschnitt und NICHT der gleitende Durchschnitt. Wie Zähler wird größer die Auswirkungen einer neuen Eingabe Probe wird verschwindend klein ndash Hilmar Feb 3 15 at 13:53 Ihre Antwort 2017 Stack Exchange, IncFrequency Response des laufenden Mittelwerts Der Frequenzgang eines LTI-Systems ist der DTFT der Impulsantwort, Die Impulsantwort eines L-Sample-Gleitwertes ist seit dem gleitenden Durchschnittsfilter Ist FIR, der Frequenzgang reduziert sich auf die endliche Summe Wir können die sehr nützliche Identität verwenden, um den Frequenzgang zu schreiben, wo wir ae minus jomega gelassen haben. N 0 und M L minus 1. Wir können an der Größe dieser Funktion interessiert sein, um zu bestimmen, welche Frequenzen durch den Filter ungedämpft und die abgeschwächt werden. Unten ist eine Darstellung der Größe dieser Funktion für L 4 (rot), 8 (grün) und 16 (blau). Die horizontale Achse reicht von null bis pi Radiant pro Probe. Beachten Sie, dass in allen drei Fällen der Frequenzgang eine Tiefpasscharakteristik aufweist. Eine konstante Komponente (Nullfrequenz) im Eingang geht durch den Filter ungedämpft. Bestimmte höhere Frequenzen wie pi 2 werden durch den Filter vollständig eliminiert. Allerdings, wenn die Absicht war, einen Tiefpassfilter zu entwerfen, dann haben wir nicht sehr gut gemacht. Einige der höheren Frequenzen werden nur um einen Faktor von etwa 110 (für den 16 Punkt gleitenden Durchschnitt) oder 13 (für den vier Punkt gleitenden Durchschnitt) gedämpft. Wir können viel besser machen. Die obige Auftragung wurde durch den folgenden Matlab-Code erstellt: Omega 0: pi400: pi H4 (14) (1-exp (-iomega4)) (1-exp (-iomega)) H8 (18) (1-exp (- (1-exp (-iomega)) (1-exp (-iomega)) (1-exp (-iomega)) (1-exp (-iomega)) (1-exp (-Iomega) H16)) Achse (0, pi, 0, 1) Copyright Kopie 2000- - Universität von Kalifornien, Berkeley

Comments