Monday, 2 January 2017

Exponentiell Gleitender Tiefpassfilter

Eine einfache und allgemeine Methode für das Ausfüllen fehlender Daten, wenn Sie Läufe der vollständigen Daten haben, ist, lineare Regression zu verwenden. Sagen Sie haben 1000 Läufe von 5 in einer Reihe mit keiner fehlt. Richten Sie die 1000 x 1 Vektor y und 1000 x 4 Matrix X: Regression geben Ihnen 4 Zahlen ein b c d, die eine beste Übereinstimmung für Ihre 1000 Zeilen von Daten mdash unterschiedliche Daten geben, unterschiedlich ein b c d. Dann verwenden Sie diese ein b c d zu schätzen (voraussagen, interpolieren) fehlende wt0. (Für die menschlichen Gewichte, Id erwarten abcd um rund 14.) (Es gibt Zillionen von Büchern und Papieren auf Regression, auf allen Ebenen. Für die Verbindung mit Interpolation, aber ich weiß nicht, eine gute Einführung jedermann) Ein Easy - Digital-Filter Der exponentielle gleitende Durchschnitt (EMA) ist ein unendlicher Impulsantwortfilter (IIR-Filter), der in vielen eingebetteten DSP-Anwendungen verwendet werden kann. Es benötigt nur wenig RAM und Rechenleistung. Was ist ein Filter Filter kommen sowohl in analogen und digitalen Formen und existieren, um bestimmte Frequenzen aus einem Signal zu entfernen. Ein übliches Analogfilter ist das unten gezeigte Tiefpass-RC-Filter. Analoge Filter zeichnen sich durch ihre Frequenzantwort aus, wie stark die Frequenzen gedämpft (Amplitudengang) und verschoben (Phasengang) sind. Der Frequenzgang kann unter Verwendung einer Laplace-Transformation analysiert werden, die eine Übertragungsfunktion in der S-Domäne definiert. Für die obige Schaltung ist die Übertragungsfunktion gegeben durch: Wenn R gleich 1 Kiloohm und C gleich einem Mikrofarad ist, ist die Betragsantwort unten gezeigt. Beachten Sie, dass die X-Achse logarithmisch ist (jede Markierung ist 10 Mal größer als die letzte). Die y-Achse ist in Dezibel (das ist eine logarithmische Funktion des Ausgangs). Die Grenzfrequenz für diesen Filter beträgt 1000 rad oder 160 Hz. Dies ist der Punkt, bei dem weniger als die Hälfte der Leistung bei einer gegebenen Frequenz vom Eingang zum Ausgang des Filters übertragen wird. Bei der Abtastung eines Signals mit einem Analog-Digital-Wandler (ADC) müssen analoge Filter in eingebetteten Ausführungen verwendet werden. Der ADC erfasst nur Frequenzen, die bis zur Hälfte der Abtastfrequenz liegen. Wenn der ADC beispielsweise 320 Abtastungen pro Sekunde erfasst, wird das Filter (mit einer Grenzfrequenz von 160 Hz) zwischen dem Signal und dem ADC-Eingang platziert, um ein Aliasing zu verhindern (was ein Phänomen ist, bei dem höhere Frequenzen in dem abgetasteten Signal auftreten Niedrigere Frequenzen). Digitale Filter Digitale Filter dämpfen Frequenzen in der Software anstatt analoge Komponenten. Ihre Implementierung beinhaltet das Abtasten der analogen Signale mit einem ADC, wobei dann ein Softwarealgorithmus angewendet wird. Zwei gemeinsame Designansätze für die digitale Filterung sind FIR-Filter und IIR-Filter. FIR Filter Die Finite Impulse Response (FIR) Filter verwenden eine endliche Anzahl von Samples, um den Ausgang zu erzeugen. Ein einfacher gleitender Durchschnitt ist ein Beispiel eines Tiefpass-FIR-Filters. Höhere Frequenzen werden abgeschwächt, da die Mittelung das Signal glättet. Der Filter ist endlich, weil die Ausgabe des Filters durch eine endliche Anzahl von Eingangsabtastwerten bestimmt wird. Als Beispiel addiert ein 12-Punkt-Gleit-Mittelfilter die 12 jüngsten Abtastwerte, dividiert dann durch 12. Die Ausgabe von IIR-Filtern wird durch (bis zu) einer unendlichen Anzahl von Eingangsabtastwerten bestimmt. IIR-Filter Infinite Impulse Response (IIR) - Filter sind eine Art von Digitalfiltern, bei denen der Ausgang theoretisch in jedem Fall durch einen Eingang beeinflusst wird. Der exponentielle gleitende Durchschnitt ist ein Beispiel eines Tiefpass-IIR-Filters. Exponential Moving Average Filter Ein exponentieller gleitender Durchschnitt (EMA) wendet exponentielle Gewichte für jede Stichprobe an, um einen Durchschnitt zu berechnen. Obwohl dies kompliziert scheint, ist die Gleichung, die in der digitalen Filterung Parlance als die Differenzgleichung zur Berechnung der Ausgabe bekannt ist, einfach. In der folgenden Gleichung ist y die Ausgabe x ist die Eingabe und alpha ist eine Konstante, die die Grenzfrequenz festlegt. Um zu analysieren, wie sich dieser Filter auf die Frequenz des Ausgangs auswirkt, wird die Z-Domänenübertragungsfunktion verwendet. Die Amplitudenantwort ist unten für Alpha gleich 0,5 gezeigt. Die y-Achse ist wiederum in Dezibel dargestellt. Die x-Achse ist logarithmisch von 0,001 bis pi. Die Real-Frequenz-Frequenz ordnet der x-Achse zu, wobei Null die Gleichspannung ist und pi gleich der Hälfte der Abtastfrequenz ist. Alle Frequenzen, die größer als die Hälfte der Abtastfrequenz sind, werden gelöscht. Wie erwähnt, kann ein analoges Filter praktisch alle Frequenzen im digitalen Signal unterhalb der halben Abtastfrequenz sicherstellen. Der EMA-Filter ist aus zwei Gründen vorteilhaft in eingebetteten Konstruktionen. Erstens ist es einfach, die Grenzfrequenz einzustellen. Eine Verringerung des Wertes von Alpha verringert die Grenzfrequenz des Filters, wie durch Vergleich der obigen Alpha-0,5-Kurve mit der unten gezeigten Kurve mit alpha 0,1 dargestellt wird. Zweitens ist die EMA einfach zu kodieren und erfordert nur eine geringe Menge an Rechenleistung und Speicher. Die Code-Implementierung des Filters verwendet die Differenzgleichung. Es gibt zwei Multiplikationsoperationen und eine Additionsoperation für jeden Ausgang, der die Operationen ignoriert, die zum Runden von Fixpunktmathematik erforderlich sind. Nur das aktuellste Sample muss im RAM gespeichert werden. Dies ist wesentlich geringer als die Verwendung eines einfachen gleitenden Durchschnittsfilters mit N Punkten, die N Multiplikations - und Additionsoperationen sowie N Samples, die im RAM gespeichert werden sollen, erfordern. Der folgende Code implementiert den EMA-Filter mit 32-Bit-Fixpunkt-Mathematik. Der folgende Code ist ein Beispiel für die Verwendung der oben genannten Funktion. Fazit Filter, sowohl analoge als auch digitale, sind ein wesentlicher Bestandteil eingebetteter Designs. Sie ermöglichen es Entwicklern, unerwünschte Frequenzen zu befreien, wenn sie die Sensoreingänge analysieren. Damit digitale Filter nützlich sind, müssen analoge Filter alle Frequenzen über die Hälfte der Abtastfrequenz entfernen. Digitale IIR-Filter können leistungsstarke Werkzeuge in Embedded-Design, wo Ressourcen begrenzt werden. Der exponentielle gleitende Durchschnitt (EMA) ist ein Beispiel für einen solchen Filter, der bei eingebetteten Designs aufgrund des geringen Speicher - und Rechenleistungsbedarfs gut funktioniert. Tiefpassfilter Dies sind in erster Linie Hinweise Es wird in keinem Sinne vollständig sein. Es besteht darin, Fragmente nützlicher Informationen zu enthalten. Pseudocode Der exponentiell gewogene gleitende Mittelwert (EWMA) ist der Name für die wahrscheinlich einfachste digitale Zeitbereichsrealisierung des (ersten) Tiefpaßes auf diskreten Daten. Dieser Filter glättet mit einem sich bewegenden lokalen Durchschnitt, was ihn zu einem trägen Nachfolger des Eingangssignals macht. Intuitiv reagiert sie langsam auf die schnellen Änderungen (den hochfrequenten Anteil), während sie immer noch der Gesamttendenz des Signals (dem niederfrequenten Anteil) folgen. Er wird durch eine Variable (siehe x3b1) gewogen, um seine Empfindlichkeit variieren zu können. In Anwendungen, die in einem regelmäßigen Intervall (z. B. Sound) abtasten, können Sie x3b1 mit dem Frequenzinhalt in Beziehung setzen. In diesen Fällen möchten Sie oft eine gefilterte Ausgangsserie für eine Eingangsserie berechnen, indem Sie eine Liste durchlaufen, die so etwas wie: oder das Äquivalent macht: Die letztere Form kann sich intuitiveinformulieren: Die Änderung des gefilterten Outputs ist proportional zur Menge von Geändert und mit der Filterstärke x3b1 gewogen. Beide können helfen, zu prüfen, wie die Verwendung der zuletzt gefilterten Ausgabe die Trägheit des Systems hervorruft: Ein kleineres x3b1 (größeres 1-x3b1 in dem ehemaligen) (macht auch für größere RC) bedeutet, dass der Ausgang träger anliegt und weniger Rauschen zeigen sollte Cutoff-Frequenz ist niedriger (überprüfen)). Ein größeres x3b1 (kleineres 1-x3b1) (kleineres RC) bedeutet, dass sich der Ausgang schneller einstellen wird (weniger Trägheit), aber empfindlicher gegenüber Rauschen ist (da die Grenzfrequenz höher ist) Wo Sie nur möchten, dass der letzte Wert die Speicherung eines großen Arrays vermeiden kann, indem Sie für jedes neue Sample (oft eine Reihe von Zeiten in einer Reihe, um sicherzustellen, dass wir genug einstellen) folgendes tun. In Fällen nicht-so-regelmäßiger Probenahme ist x3b1 mehr mit der Geschwindigkeit der Adaption als mit dem Häufigkeitsgehalt verbunden. Sein noch relevantes, aber die Anmerkungen über Frequenzinhalt gelten weniger streng. In der Regel möchten Sie das Arraymemory als Float implementieren - auch wenn Sie Ints zurückgeben - um Probleme durch Rundungsfehler zu vermeiden. Das meiste Problem: Wenn Alphadifferenz (selbst eine schwebende Multiplikation) kleiner als 1 ist, wird sie in einer (truncatng) Form zu einer ganzen Zahl 0. Wenn zum Beispiel Alpha 0,01 ist, werden Signalunterschiede kleiner als 100 für eine Einstellung von 0 (über eine Ganzzahl-Trunkierung) sorgen, so daß sich der Filter niemals auf den tatsächlichen ADC-Wert einstellen würde. EWMA hat das Wort exponentiell in ihr, weil jede neue gefilterte Ausgabe effektiv alle Werte vor ihr und effektiv mit exponentiell abklingende Gewichte verwendet. Siehe die Wikipedia Links für weitere Diskussion. Ein grafisches Beispiel: Ein Screenshot aus arduinoscope - ein bewegter Graph mit den neuesten Proben auf der linken Seite. Das rohe Signal an der Spitze ist ein paar Sekunden wert eines ADC-Sampling von einem schwimmenden Pin, mit einem Finger berührt es hin und wieder. Die anderen sind Lowpassed Versionen davon, mit zunehmender Stärke. Einige Dinge zu beachten: die langsame exponentielle Anpassung an Schritt-ähnliche Antworten (ähnlich wie ein Ladekondensator - schnell intially, dann langsamer und langsamer) die Unterdrückung der einzelnen großen Spikesdeviations. Dass es sicher möglich ist, zu hart zu filtern (obwohl diese Beurteilung stark von der Abtastgeschwindigkeit und den Anpassungsinhaltsfrequenzen abhängt, die Ihr Zielzweck benötigt). Im zweiten Bild kommt die Vollbereichsschwingung auf halbem Weg nicht so sehr wegen der Filterung, sondern auch vor allem, weil die meisten Rohproben um sie herum an beiden Enden des ADCs-Bereichs gesättigt sind. Auf x3b1, x3c4 und die Cutoff-Frequenz Dieser Artikel ist ein Stub x2014 wahrscheinlich ein Stapel von halb-sortierten Notizen, ist nicht gut überprüft, so kann falsche Bits haben. (Fühlen Sie sich frei zu ignorieren, zu fixieren, oder sagen Sie mir) x3b1 ist der Glättungsfaktor, theoretisch zwischen 0,0 und 1,0, in der Praxis meist lt0,2 und oft lt0.1 oder kleiner, weil über, dass Sie kaum noch Filterung. In DSP basiert es oft auf: x394 t. Regelmäßig schriftlich dt. Das Zeitintervall zwischen den Abtastwerten (Reziprokwert der Abtastrate), eine Wahl der Zeitkonstante x3c4 (tau), alias RC (letzteres scheint ein Hinweis auf einen Widerstand-plus-Kondensator-Schaltkreis, der ebenfalls Tiefpaß erzeugt Die der Kondensator lädt Wenn Sie eine RC in der Nähe von dt youll erhalten Alphas höher als 0,5, und auch eine Cutoff-Frequenz, die in der Nähe der Nyquist-Frequenz ist (passiert bei 0.666 (überprüfen)), die herausfiltert so wenig, dass es den Filter macht In der Praxis youll oft wählen Sie eine RC, die mindestens ein paar Vielfache von dt, was bedeutet, dass x3b1 ist in der Größenordnung von 0,1 oder weniger. Wenn die Probenahme erfolgt streng regelmäßig, wie es für Sound und viele andere DSP-Anwendungen , Ist die Cutoff-Frequenz, auch bekannt als Knie-Frequenz, gut definiert, zum Beispiel: Wenn RC0.002sec, ist die Cutoff bei 200Hz, 2000Hz und 20000Hz Abtastung, die für Alpha von 0,7, 0,2 und 0,024 macht (Bei gleicher Abtastgeschwindigkeit: je niedriger Alpha, desto geringer die Anpassung an neue Werte und desto geringer die effektive Cutoff-Frequenz) (verifizieren) Für einen Tiefpass erster Ordnung: Bei niedrigeren Frequenzen ist das Ansprechverhalten nahezu vollständig flach Diese Frequenz beträgt -3dB (hat begonnen, in einem weichen Bendknee abzunehmen) bei höheren Frequenzen, die es bei 6dboctave (20dBdecade) abfällt. Höherwertige Variationen fallen schneller ab und haben ein härteres Knie. Beachten Sie, dass es auch eine Phasenverschiebung gibt, die hinter dem Eingang zurückbleibt. Es hängt von der Frequenz, die es beginnt früher als die Amplitude fallen, und wird -45 Grad bei der Knie-Frequenz (überprüfen). Arduino Beispiel Dieser Artikel ist ein Stub x2014 wahrscheinlich ein Haufen von halb-sortierten Notizen, ist nicht gut überprüft, so kann falsche Bits haben. (Fühlen Sie sich frei zu ignorieren, zu fixieren, oder sagen Sie mir) Dies ist eine Single-Stück-Speicher-Version, denn wenn Sie interessiert sind nur in den (neuesten) Ausgangswert. Semi-sortiert


No comments:

Post a Comment