Friday 2 June 2017

Moving Average Filter Verzögerung


Der Moving Average als Filter Der gleitende Durchschnitt wird oft zum Glätten von Daten in Gegenwart von Rauschen verwendet. Der einfache gleitende Durchschnitt wird nicht immer als der Finite Impulse Response (FIR) Filter erkannt, der es ist, während er tatsächlich einer der häufigsten Filter in der Signalverarbeitung ist. Wenn man sie als Filter behandelt, kann man sie beispielsweise mit Fenster-Sinc-Filtern vergleichen (siehe die Artikel über Tiefpass-Hochpass - und Bandpass - und Bandsperrfilter für Beispiele dafür). Der Hauptunterschied zu diesen Filtern besteht darin, dass der gleitende Durchschnitt für Signale geeignet ist, für die die nützlichen Informationen im Zeitbereich enthalten sind. Von denen Glättungsmessungen durch Mittelung ein Beispiel sind. Window-Sinc-Filter sind dagegen starke Darsteller im Frequenzbereich. Mit Ausgleich in der Audioverarbeitung als typisches Beispiel. Es gibt einen detaillierteren Vergleich der beiden Arten von Filtern in Time Domain vs. Frequency Domain Performance von Filtern. Wenn Sie Daten haben, für die sowohl die Zeit als auch der Frequenzbereich wichtig sind, dann möchten Sie vielleicht einen Blick auf Variationen über den Moving Average haben. Die eine Anzahl von gewichteten Versionen des gleitenden Durchschnittes darstellt, die besser sind. Der gleitende Durchschnitt der Länge (N) kann so geschrieben werden, wie es typischerweise implementiert ist, wobei die aktuelle Ausgabeprobe als der Durchschnitt der vorherigen (N) Abtastwerte vorliegt. Als Filter erscheint der gleitende Durchschnitt eine Faltung der Eingangsfolge (xn) mit einem rechteckigen Puls der Länge (N) und der Höhe (1N) (um den Bereich des Pulses und damit die Verstärkung des Filters zu bilden , eins ). In der Praxis ist es am besten, (N) ungerade zu nehmen. Obwohl ein gleitender Durchschnitt auch unter Verwendung einer geraden Anzahl von Abtastwerten berechnet werden kann, hat die Verwendung eines ungeraden Wertes für (N) den Vorteil, daß die Verzögerung des Filters eine ganzzahlige Anzahl von Abtastwerten ist, da die Verzögerung eines Filters mit (N) Proben sind genau ((N-1) 2). Der gleitende Durchschnitt kann dann exakt mit den Originaldaten ausgerichtet werden, indem er durch eine ganzzahlige Anzahl von Samples verschoben wird. Zeitdomäne Da der gleitende Durchschnitt eine Faltung mit einem rechteckigen Puls ist, ist sein Frequenzgang eine Sinc-Funktion. Das macht es so etwas wie das Dual des Fenster-Sinc-Filters, denn das ist eine Faltung mit einem Sinc-Puls, der zu einem rechtwinkligen Frequenzgang führt. Es ist dieser Sinc-Frequenzgang, der den gleitenden Durchschnitt zu einem schlechten Performer im Frequenzbereich macht. Allerdings führt es im Zeitbereich sehr gut aus. Daher ist es perfekt, um Daten zu sperren, um Rauschen zu entfernen, während gleichzeitig noch eine schnelle Schrittantwort beibehalten wird (Abbildung 1). Für die typische additive White Gaussian Noise (AWGN), die oft angenommen wird, hat die Mittelung (N) Samples die Wirkung, das SNR um einen Faktor (sqrt N) zu erhöhen. Da das Rauschen für die einzelnen Proben unkorreliert ist, gibt es keinen Grund, jede Probe anders zu behandeln. Daher wird der gleitende Durchschnitt, der jeder Probe das gleiche Gewicht gibt, die maximale Menge an Rauschen für eine gegebene Schrittantwortschärfe loswerden. Implementierung Da es sich um einen FIR-Filter handelt, kann der gleitende Durchschnitt durch Faltung umgesetzt werden. Es wird dann die gleiche Effizienz (oder das Fehlen davon) wie jeder andere FIR-Filter haben. Allerdings kann es auch rekursiv realisiert werden. Es folgt unmittelbar aus der Definition, dass diese Formel das Ergebnis der Ausdrücke für (yn) und (yn1) ist, dh wo wir bemerken, dass die Änderung zwischen (yn1) und (yn) ist, dass ein zusätzlicher Term (xn1N) erscheint Das Ende, während der Begriff (xn-N1N) von Anfang an entfernt wird. In praktischen Anwendungen ist es oft möglich, die Division durch (N) für jeden Term zu verlassen, indem die resultierende Verstärkung von (N) an einer anderen Stelle kompensiert wird. Diese rekursive Umsetzung wird viel schneller als die Faltung sein. Jeder neue Wert von (y) kann mit nur zwei Additionen berechnet werden, anstelle der (N) Additionen, die für eine einfache Implementierung der Definition notwendig wären. Eine Sache, mit einer rekursiven Umsetzung zu suchen, ist, dass Rundungsfehler sich ansammeln werden. Dies kann oder auch kein Problem für Ihre Anwendung sein, aber es bedeutet auch, dass diese rekursive Implementierung tatsächlich besser funktionieren wird mit einer Integer-Implementierung als mit Gleitkommazahlen. Das ist ganz ungewöhnlich, da eine Gleitkomma-Implementierung in der Regel einfacher ist. Die Schlussfolgerung von all dem muss sein, dass Sie nie unterschätzen die Nützlichkeit der einfachen gleitenden durchschnittlichen Filter in Signalverarbeitung Anwendungen. Filter Design Tool Dieser Artikel wird mit einem Filter Design Tool ergänzt. Experimentiere mit verschiedenen Werten für (N) und visualisiere die resultierenden Filter. Versuchen Sie es jetztFIR Filter Grundlagen 1.1 Was sind quotFIR filtersquot FIR Filter sind eine von zwei primären Arten von digitalen Filtern, die in Digital Signal Processing (DSP) Anwendungen verwendet werden, der andere Typ ist IIR. 1.2 Was bedeutet quotFIRquot bedeuten quotFIRquot bedeutet quotFinite Impulse Responsequot. Wenn du einen Impuls hingängst, das heißt, ein einzelnes Notizproblem, gefolgt von vielen Ziffernproben, werden Nullen herauskommen, nachdem die Zitatnote durch die Verzögerungslinie des Filters gefahren ist. 1.3 Warum ist die Impulsantwort quotfinitequot Im gemeinsamen Fall ist die Impulsantwort endlich, weil es keine Rückmeldung in der FIR gibt. Ein Mangel an Feedback garantiert, dass die Impulsantwort endlich ist. Daher ist der Begriff quotfinite impulse responsequot fast gleichbedeutend mit quotno feedbackquot. Wenn jedoch Rückmeldung angewendet wird, ist die Impulsantwort endlich, der Filter ist immer noch ein FIR. Ein Beispiel ist das gleitende Durchschnittsfilter, bei dem die N-te vorherige Probe jedes Mal subtrahiert (zurückgespeist wird), wenn ein neues Sample hereinkommt. Dieser Filter hat eine endliche Impulsantwort, obwohl er Feedback verwendet: nach N Abtastungen eines Impulses, der Ausgabe Wird immer null sein 1.4 Wie sage ich quotFIRquot Manche Leute sagen, die Buchstaben F-I-R andere Leute aussprechen, als ob es eine Art von Baum wäre. Wir bevorzugen den Baum. (Der Unterschied ist, ob Sie über einen F-I-R-Filter oder einen FIR-Filter sprechen.) 1.5 Was ist die Alternative zu FIR-Filtern DSP-Filter können auch unbegrenzte Impulse Responsequot (IIR) sein. (Siehe dspGurus IIR FAQ.) IIR-Filter verwenden Feedback, so dass, wenn Sie einen Impuls eingeben die Ausgabe theoretisch klingt auf unbestimmte Zeit. 1.6 Wie können FIR-Filter mit IIR-Filtern verglichen werden Jeder hat Vor - und Nachteile. Insgesamt überwiegen die Vorteile von FIR-Filtern jedoch die Nachteile, so dass sie viel mehr als IIRs verwendet werden. 1.6.1 Was sind die Vorteile von FIR-Filtern (im Vergleich zu IIR-Filtern) Im Vergleich zu IIR-Filtern bieten FIR-Filter folgende Vorteile: Sie lassen sich leicht als quadratische Phasequot (und in der Regel) konzipieren. Setzen Sie einfach, lineare Phase Filter verzögern das Eingangssignal, aber donrsquot verzerrt seine Phase. Sie sind einfach zu implementieren. Bei den meisten DSP-Mikroprozessoren kann die FIR-Berechnung durch Schleifen einer einzelnen Anweisung erfolgen. Sie eignen sich für Mehrfachanwendungen. Bei Multi-Rate verstehen wir entweder quotdecimationquot (Verringerung der Abtastrate), ein Interpolationsquot (Erhöhung der Abtastrate) oder beides. Ob Dezimierung oder Interpolation, die Verwendung von FIR-Filtern erlaubt es, einige der Berechnungen wegzulassen und damit eine wichtige Recheneffizienz zu schaffen. Im Gegensatz dazu, wenn IIR-Filter verwendet werden, muss jeder Ausgang individuell berechnet werden, auch wenn diese Ausgabe verworfen wird (so wird die Rückmeldung in den Filter integriert). Sie haben wünschenswerte numerische Eigenschaften. In der Praxis müssen alle DSP-Filter mit einer endlichen Präzisionsarithmetik implementiert werden, dh einer begrenzten Anzahl von Bits. Die Verwendung von Finite-Präzisions-Arithmetik in IIR-Filtern kann aufgrund der Verwendung von Rückkopplungen zu erheblichen Problemen führen, aber FIR-Filter ohne Rückkopplung können üblicherweise mit weniger Bits implementiert werden, und der Designer hat weniger praktische Probleme, um mit einer nicht-idealen Arithmetik zu lösen. Sie können mit gebrochener Arithmetik implementiert werden. Im Gegensatz zu IIR-Filtern ist es immer möglich, ein FIR-Filter mit Koeffizienten mit einer Grße von weniger als 1,0 zu implementieren. (Die Gesamtverstärkung des FIR-Filters kann bei Bedarf an seinem Ausgang angepasst werden.) Dies ist ein wichtiger Aspekt bei der Verwendung von Festpunkt-DSPs, da er die Implementierung viel einfacher macht. 1.6.2 Was sind die Nachteile von FIR-Filtern (im Vergleich zu IIR-Filtern) Im Vergleich zu IIR-Filtern haben FIR-Filter manchmal den Nachteil, dass sie mehr Speicher benötigen und eine Berechnung, um eine gegebene Filteransprechcharakteristik zu erreichen. Auch sind bestimmte Antworten nicht praktisch mit FIR-Filtern zu implementieren. 1.7 Welche Begriffe werden bei der Beschreibung von FIR-Filtern verwendet Impulse Response - Die Impulsantwort eines FIR-Filters ist eigentlich nur der Satz von FIR-Koeffizienten. (Wenn du einen Quimplusequot in einen FIR-Filter steckst, der aus einer Notizprobe besteht, gefolgt von vielen Quotenproben, so ist die Ausgabe des Filters der Satz von Koeffizienten, da die 1 Probe an jedem Koeffizienten nacheinander an die Ausgabe weitergeleitet wird.) Tap - Ein FIR quottapquot ist einfach ein coefficientdelay Paar. Die Anzahl der FIR-Hähne (oft als quanten bezeichnet) ist ein Hinweis auf 1) die Menge an Speicher, die erforderlich ist, um den Filter zu implementieren, 2) die Anzahl der Berechnungen, die erforderlich sind, und 3) die Menge der Filterung, die der Filter in der Tat ausführen kann, (MAC) - In einem FIR-Kontext handelt es sich bei einem quotMACquot um die Verknüpfung eines Koeffizienten mit dem entsprechenden verzögerten Datenmuster und der Akkumulation des Ergebnisses. FIRs benötigen normalerweise einen MAC pro Hahn. Die meisten DSP-Mikroprozessoren implementieren den MAC-Betrieb in einem einzigen Befehlszyklus. Übergangsband - Das Band der Frequenzen zwischen Durchlassband und Stoppbandkanten. Je schmaler das Übergangsband ist, desto mehr Hähne sind erforderlich, um den Filter zu implementieren. (Ein quotsmallquot-Übergangsband führt zu einem quotsharpquot-Filter.) Delay Line - Der Satz von Speicherelementen, die die quotZ-1quot Verzögerungselemente der FIR-Berechnung implementieren. Circular Puffer - Ein spezieller Puffer, der quer ist, weil das Zerstören am Ende dazu führt, dass er sich an den Anfang wickelt, oder weil das Dekrementieren von Anfang an es zum Ende umwickelt. Zirkuläre Puffer werden oft von DSP-Mikroprozessoren bereitgestellt, um das Zählwerk der Proben durch die FIR-Verzögerungsleitung zu implementieren, ohne die Daten im Speicher buchstäblich verschieben zu müssen. Wenn ein neuer Sample dem Puffer hinzugefügt wird, ersetzt er automatisch den ältesten. Dokumentation Beschreibung gd, w grpdelay (b, a) gibt die Gruppenverzögerungsantwort zurück, gd. Des durch die Eingangsvektoren, b und a spezifizierten diskreten Zeitfilters. Die Eingangsvektoren sind die Koeffizienten für den Zähler, b. Und Nenner, a. Polynome in z -1 Die Z-Transformation des diskreten Zeitfilters ist H (z) B (z) A (z) x2211 l 0 N x2212 1 b (n 1) z x2212 l x 2211 l 0 M x 2212 1 a (l 1) z x 2212 L. Die Filtergruppen-Verzögerungsantwort wird bei 512 gleich beabstandeten Punkten im Intervall 0, 960) am Einheitskreis ausgewertet. Die Auswertungspunkte auf dem Einheitskreis werden in w zurückgegeben. Gd, w grpdelay (b, a, n) gibt die Gruppenverzögerungsantwort des diskreten Zeitfilters zurück, die bei n gleich beabstandeten Punkten auf dem Einheitskreis im Intervall 0, 960 ausgewertet werden. N ist eine positive ganze Zahl. Für beste Ergebnisse setzen Sie auf einen Wert, der größer ist als die Filterreihenfolge. Gd, w grpdelay (sos, n) gibt die Gruppenverzögerungsantwort für die zweite Matrix der zweiten Ordnung zurück, sos. Sos ist eine K - by-6-Matrix, wobei die Anzahl der Abschnitte K. Muss größer oder gleich 2 sein. Wenn die Anzahl der Abschnitte kleiner als 2 ist, betrachtet grpdelay die Eingabe als Zählervektor, b. Jede Reihe von SOS entspricht den Koeffizienten eines zweiten (Biquad) Filters. Die i-te Zeile der SOS-Matrix entspricht bi (1) bi (2) bi (3) ai (1) ai (2) ai (3). Gd, w grpdelay (d, n) gibt die Gruppenverzögerungsantwort für den digitalen Filter zurück, d. Verwenden Sie designfilt, um d basierend auf Frequenz-Response-Spezifikationen zu erzeugen. Gd, f grpdelay (.n, fs) gibt eine positive Abtastfrequenz fs in hertz an. Es gibt einen Längenvektor, f. Wobei die Frequenzpunkte in Hertz enthalten sind, bei denen die Gruppenverzögerungsantwort ausgewertet wird. F enthält n Punkte zwischen 0 und fs2. Gd, w grpdelay (. N, ganz) und gd, f grpdelay (.n, ganz, fs) n n-Punkte um den ganzen Einheitskreis (von 0 bis 2 960 oder von 0 bis fs). Gd grpdelay (.w) und gd grpdelay (. F, fs) die bei den Winkelfrequenzen in w (in radianssample) bzw. in f (in Zykluseinheitszeit) ausgewertete Gruppenverzögerungsantwort zurück, wobei fs die Abtastfrequenz ist. W und f sind Vektoren mit mindestens zwei Elementen. Grpdelay (.) Ohne Ausgabeargumente zeichnet die Gruppenverzögerungsantwort gegenüber der Frequenz auf. Grpdelay arbeitet sowohl für reale als auch für komplexe Filter. Anmerkung: Wenn die Eingabe zu grpdelay eine Einzelgenauigkeit ist, wird die Gruppenverzögerung mit einer Präzisions-Arithmetik berechnet. Die Ausgabe, gd. Ist eine einfache Präzision. (0) 0 bull 2 ​​160160160160 Der gleitende Mittelwertfilter ist ein FIR-Filter der Länge N mit allen Taps, die gleich (1N) gesetzt sind .160 Sein bekannt für lausige Frequenztrennung, aber ausgezeichnete Zeitreaktion - - in diesem Sinne raus-out-Bessels ein Bessel-Filter.160 Sie können es mit SigmaStudios FIR-Block implementieren, wie hier beschrieben: Je länger der Filter, desto mehr Glättung - aber der Standard-FIR-Filter-Algorithmus verwendet viele Anweisungen für riesige Filter, Weil es Koeffizienten für jeden Hahn zu vervielfachen hat.160 Dies ist eine Verschwendung, wenn alle Koeffizienten gleich sind.160 Wie Kapitel 15 von Steven W. Smiths Buch zeigt, können Sie einen gleitenden durchschnittlichen Filter mit einer rekursiven Technik, die eine hat Tippen Sie vor und nach einer (N-1) Größenverzögerung.160 Ein solcher Filter erscheint unten als Teil einer Testschaltung mit Signalquelle und einem Bessel-Filter zum Vergleich: 160160160160 Koeffizienten werden am Eingang mit dem Verstärkungsblock ausgegeben.160 Das vorliegende Sample fügt dem Ausgang hinzu, wenn es in die Verzögerung eintritt, das verzögerte Sample subtrahiert vom Ausgang, wenn es ausläuft.160 Der Addierer mit der Rückkopplung akkumuliert diese Additionen und Subtraktionen, um die Ausgabe zu bilden - das tut etwas, das in C trivial ist, aber ist Ansonsten ein Schmerz in der GUI.160 Obwohl eine rekursive Technik verwendet wird, bleibt der Filter ein echter FIR-Filter - die Länge seiner Impulsantwort wird nur durch Ihre Verzögerung gesetzt. 160160160160 Meine Testeingabe ist eine Rechteckwelle mit zusätzlichem Rauschen.160 Gefilterte Ergebnisse erscheinen als obere Spur in beiden Fotos - Zuerst der gleitende Mittelwertfilter: Der Bessel-Filter: 160160160160 Der gleitende Mittelwertfilter ermöglicht mehr Rauschen, aber besser bewahrt es Quadratische Wellenform - es ist nicht um die Ecken herum, und die Auf - und Absteigungen sind symmetrisch (seine lineare Phase) .160 Das Hören der beiden Wellenformen mit Kopfhörern zeigt ein ähnliches Ergebnis - mehr Lärm mit dem gleitenden Durchschnittsfilter, aber das Merkmal Klang einer quadratischen Welle kommt durch.

No comments:

Post a Comment