Thursday 19 January 2017

Moving Average Filter Design

Ein einleitender digitaler Filter Nun öffnen Sie MicroModeler DSP und wählen Sie einen digitalen Filter von der Symbolleiste an der Oberseite und ziehen Sie sie zu unserer Anwendung. Nun wählen Sie einen gleitenden Durchschnitt Filter, weil seine eine der einfachsten Arten von Filtern. Nach dem Löschen des Filters werden die Anzeigen automatisch aktualisiert. (Klicken Sie auf MicroModeler DSP in einem neuen Fenster zu starten) Wir alle wissen, was ein Durchschnitt ist - fügen Sie die Zahlen zusammen und teilen, wie viele es gibt. Ein gleitender Durchschnitt filtert genau das. Es speichert eine Historie der letzten N Zahlen und gibt ihren Durchschnitt aus. Jedes Mal, wenn eine neue Zahl kommt, wird der Mittelwert effektiv aus den gespeicherten Mustern neu berechnet und eine neue Zahl ausgegeben. Der Frequenzgang eines Filters Oben rechts sehen wir den Graphen von Magnitude vs Frequency, oder wie viel unterschiedliche Frequenzen durch den gleitenden mittleren Filter verstärkt oder reduziert werden. Wie Sie vielleicht erwarten, wird ein Mittelwert der letzten N Abtastwerte eine Art Glättung auf das Signal anwenden, wobei die niedrigen Frequenzen beibehalten und die hohen Frequenzen entfernt werden. Wir können die Anzahl der vorherigen Eingaben oder Proben, die sie durch die Einstellung der Filterlänge N steuert, steuern. Durch Anpassen dieser Funktion können wir sehen, dass wir eine grundlegende Kontrolle darüber haben, welche Frequenzen passieren und welche verworfen werden. Das Innere eines Filters Wenn wir die Strukturansicht betrachten, können wir sehen, wie das Innere eines gleitenden Durchschnittsfilters aussehen könnte. Das Diagramm wurde kommentiert, um zu zeigen, was die verschiedenen Symbole bedeuten. Die Z -1 - Zeichen bedeuten Verzögerung um ein Mal und die Symbole bedeuten addieren oder kombinieren die Signale. Die Pfeile bedeuten multiplizieren (denken verstärken, reduzieren oder skalieren) das Signal um den Betrag rechts neben dem Pfeil angezeigt. Für einen Durchschnitt von 5 Proben nehmen wir ein Fünftel (0,2) der letzten Probe, ein Fünftel der zweitletzten Stichprobe und so weiter. Die Verzögerungskette wird als Verzögerungsleitung bezeichnet, wobei das Eingangssignal um einen weiteren Zeitschritt verzögert wird, wenn man entlang der Verzögerungsleitung fortschreitet. Die Pfeile werden auch als Hähne, so können Sie fast sie als Hähne wie die in Ihrem Küchenspüle, die alle eine fünfte offen sind. Man könnte sich vorstellen, dass das Signal von links einfließt und sich fortschreitend verzögert, wenn es sich entlang der Verzögerungsstrecke bewegt und dann in unterschiedlichen Stärken durch die Abgriffe wieder zusammengeführt wird, um den Ausgang zu bilden. Es sollte auch leicht zu sehen, dass die Ausgabe des Filters werden: Das entspricht dem Durchschnitt der letzten 5 Proben. In der Praxis wird der von MicroModeler DSP erzeugte Code Tricks verwenden, um dies effizienter zu machen, so daß nur erste und letzte Abtastungen beteiligt sein müssen, aber das Diagramm ist zu illustrativen Zwecken gut. Wenn Sie dies verstehen können, dann können Sie eine Idee, was ein FIR-Filter ist. Ein FIR-Filter ist identisch mit dem gleitenden Durchschnittsfilter, aber stattdessen können alle Zapfstärken gleich sein, sie können unterschiedlich sein. Hier haben wir einen gleitenden Mittelfilter und einen FIR-Filter. Sie können sehen, dass sie strukturell gleich sind, der einzige Unterschied ist die Stärken der Hähne. Im nächsten Abschnitt werden wir Ihnen Finite Impulse Response (FIR) Filter vorstellen. Durch die Variation der Zapfwellenstärken können wir nahezu jeden Frequenzgang erzeugen, den wir wollen. Designing Digitale Filter Im Vergleich zu ihren analogen Pendants bieten digitale Filter hervorragende Leistung und Flexibilität. Das Entwerfen von digitalen Filtern kann eine erschreckende Aufgabe jedoch wegen seiner scheinbar endlosen Strecke der Implementierungswahlen scheinen. Die breite Palette von digitalen Signalverarbeitung (DSP) Design-Tools zur Verfügung stehen, können viele der Details. Was Sie brauchen, ist ein guter Griff auf die Grundlagen der Filter-Design, um die Werkzeuge Jump-gestartet. Der Ort zu starten ist, zu wissen, welche Art von Informationen ein Signal enthält. Informationen stammen typischerweise aus einer von zwei Domänen. Sie kann im Frequenzbereich liegen, wo der Spektralinhalt des Signals von Interesse ist. Informationen können auch im Zeitbereich liegen, wo die Amplitude und Phase des Signals von Interesse ist. Der Begriff Zeitbereich ist jedoch etwas irreführend, da sich nicht alle derartigen Signale auf die Zeit beziehen. Beispielsweise ergibt eine einzelne Probe von jedem Element in einem Array von Dehnungssensoren an einem Flugzeugring ein Signal, das unter Verwendung von Zeitbereichsfiltern verarbeitet werden kann. Reverse Filtering Einer der Nachteile für rekursive (IIR) Filter ist, dass ihre Phasencharakteristiken nicht linear sind. Für einige Arten von Signalen, wie normale Audio, ist dies kein Problem. Die Phase in diesen Signalen ist zufällig zu Beginn. Andere Typen von Frequenzbereichssignalen benötigen jedoch eine lineare Phasenbeziehung, um die gewünschte Information zu erhalten. Sie können dieses Problem für IIR-Filter auf Kosten der Verdoppelung der Ausführungszeit und Komplexität lösen. Sie verwenden eine Technik namens umgekehrte Filterung, um die im ursprünglichen Filter eingeführten Phasenfehler zu korrigieren. Im Wesentlichen laufen Sie Zeit rückwärts. Das klingt wie Unmöglichkeit, aber in der digitalen Welt ist es ganz einfach. Da Sie bereits alle vergangenen Datenwerte aus der Anfangsfilterberechnung gespeichert haben, führen Sie den Filter nur mit höheren Werten statt mit früheren Werten aus. Die Differenzgleichung wird: Dies führt zu einer Verzögerung. Sie müssen so viele Samples wie die Filterreihenfolge warten, bevor Sie den ersten Ausgangswert berechnen können. Das Ergebnis einer normalen Filterung, gefolgt von einer umgekehrten Filterung, ist jedoch ein Signal mit einer Nullphasenverzögerung. Eine zweite Überlegung ist die Art der Filterimplementierung, die Sie verwenden möchten. Wie in digitalen Filtern beschrieben: eine Einführung. Von Iain A. Robin, digitale Filter kommen in zwei Arten: Faltung und rekursive. Faltungsfilter, auch Finite Impulse Response (FIR) - Filter genannt, haben die Eigenschaft, keine Phasenverzerrung zu zeigen. Es gibt natürlich eine Verzögerung, aber alle eingehenden Abtastwerte erhalten die gleiche Behandlung, so daß die Signalphasenbeziehungen erhalten bleiben. Hochauflösende FIR-Filter können leicht implementiert werden und werden extrem hohe Leistung erzielen, obwohl sie viele Ressourcen benötigen, um zu implementieren. Rekursive Filter, auch Infinite Impulse Response (IIR) - Filter genannt, können mit weit weniger Ressourcen implementiert werden als eine entsprechende FIR. Dies macht sie sowohl einfacher zu implementieren und eine Größenordnung schneller in der Ausführung als DSP-Algorithmus. IIRs zeigen jedoch eine nichtlineare Phasenreaktion, wenn sie nicht speziell für Nullphasen ausgelegt sind. Sie leiden auch unter Leistungseinschränkungen, da die endliche Wortlängenarithmetik die maximale IIR-Filterreihenfolge beschränkt, die implementiert werden kann. Mit diesen beiden Überlegungen im Auge, können Sie beginnen Auswertung Filter Eigenschaften gegen Ihre Anwendung. Filter sind am einfachsten zu verstehen, entweder aus ihrer Schrittantwort oder deren Frequenzgang. Die Sprungantwort, die in Zeitdomänenanwendungen wichtig ist, ist die Filterausgabe bei einer abrupten Änderung des Eingangssignals, wie in 1 dargestellt. Schrittreaktionen haben drei wichtige Parameter: Anstieg, Überschwingen und Phasenlinearität. Abbildung 1: Die Antwort 160Step ist die Filterausgabe bei einer abrupten Änderung des Eingangssignals. Die Anstiegszeit ist die Anzahl der Abtastwerte zwischen 10 der Ausgangsänderung und 90 der Änderung. Da Zeitdomänenfilter typischerweise verwendet werden, um zu helfen, Ereignisse im Signal zu identifizieren (z. B. eine Bitgrenze), desto schneller desto besser ist der Filter. Beim Überschwingen handelt es sich um eine von einem Filter erzeugte Verzerrung der Zeitbereichsinformation, die sich an den Rändern des Ausgabeschrittes als Rippeln zeigt. Es ist eine Verzerrung, die, wenn möglich, beseitigt werden sollte, weil sie kritische Systemleistungsinformationen maskieren könnte. Wenn das Filter ein Überschwingen hat, wird es unmöglich, zu bestimmen, ob das Signal durch das System, das es erzeugt, oder durch das Filter verzerrt wird. Die Phasenlinearität für Schrittantworten bezieht sich auf die Symmetrie der Sprungantwort oberhalb und unterhalb der 50 Mark. Wie in Abbildung 2 dargestellt. Eine lineare Phase ist um den halben Punkt symmetrisch, während eine Asymmetrie mit einer nichtlinearen Phase auftritt. Lineare Phase stellt sicher, dass steigende Flanken des gefilterten Signals wie fallende Flanken aussehen. Abbildung 2: 160 (a) Graph, der die symmetrische lineare Phase darstellt. (B) Die asymmetrische nichtlineare Phase. Frequenzgang ist in Frequenzbereich Anwendungen wichtig. Die Antwort, die in Abbildung 3 dargestellt ist. Hat ein Durchlaßband und ein Sperrband, um die Frequenzen von Interesse auszuwählen und alle anderen zu verwerfen. Die Grenze zwischen dem Durchlaßband und dem Sperrband ist das Übergangsband, das um die Filtergrenzfrequenz herum auftritt. Die Breite dieses Übergangsbandes ist der Filterwiderstand, der einer der wichtigen Parameter eines Frequenzbereichsfilters ist. Im Allgemeinen ist ein schnellerer Roll-off besser. Abbildung 3: 160Illustration von Passband, Stopband und Übergangsband in einem Filter mit guter Stopbanddämpfung. Passbandwelligkeit ist ein zweiter wichtiger Parameter. Sie stellt eine Verzerrung der im Durchlaßband auftretenden Signale dar. Idealerweise sollte es keine Durchlaßbandwelligkeit geben, so daß die gewünschten Signale unverändert durchlaufen. Der ideale Filter eliminiert auch Signale im Stopband. In der Praxis wird jedoch eine gewisse Energie in den Stoppbandfrequenzen durchlaufen. Der Betrag, um den das Filter das Stoppbandsignal reduziert, ist die Filterstoppbanddämpfung, der dritte wichtige Zeitbereichsfilterparameter. Es gibt vier häufige Arten von Frequenzbereichsfiltern: Alle können mit den drei Parametern ausgewertet werden. Obwohl die Schritt - und Frequenzreaktionen für die Bewertung eines digitalen Filters wichtig sind, gibt es einen dritten Reaktionstyp, der für die Implementierung des Filters wichtig ist: die Impulsantwort. Die Impulsantwort, die in Abbildung 4 dargestellt ist. Ist die Filterausgabe bei Empfang eines Signals, das nur einen Abtastwert ungleich Null aufweist, der als Delta-Funktion (d 91n93) bezeichnet wird. Der einfachste Weg zum Implementieren eines digitalen Filters besteht darin, eine FIR zu erzeugen, die eine Impulsantwort h91n93 (auch als Filterkernel bezeichnet) mit dem Eingangssignal x91n93 unter Verwendung von: wobei M die Anzahl von Punkten ist, die verwendet werden, um den Filterkernel auszudrücken. Abbildung 4: Darstellung der Impulsantwort. Jede der drei Antworten enthält vollständige Informationen über den Filter, so wissen, man gibt Ihnen die beiden anderen. Die Sprungantwort ist die diskrete Integration der Impulsantwort. Der Frequenzgang ergibt sich aus der diskreten Fourier-Transformation (DFT) der Impulsantwort. Ein Filterdesign kann daher mit einer Antwortbeschreibung in irgendeiner der Formen beginnen. Diese Entwürfe müssen nicht unbedingt komplex sein. Einer der nützlichsten FIR-Zeitbereichsfilter, der gleitende Mittelfilter, ist ideal, um zufälliges (weißes) Rauschen aus einem Zeitbereichssignal, wie beispielsweise einem seriellen Bitstrom, zu entfernen. Die Übertragungsfunktion eines gleitenden Mittelwerts der Länge M ist einfach in einer FIR einfach durch Speichern der letzten M Proben und Addieren zusammen implementiert. Für ein IIR ist das Ding zu realisieren, dass der gleitende Durchschnitt in einer neuen Abtastung sinkt und die älteste Abtastung jeder Abtastperiode sinkt, so dass der gleitende Mittelfilter das zufällige Rauschen in einem Signal um einen Faktor Quadratwurzel M reduziert Filter das Rauschen um den Faktor 10 verringern würde. Leider hat die Sprungantwort eines gleitenden Durchschnittsfilters eine Anstiegszeit, die mit dem M ansteigt, was unerwünscht ist. Wie sich herausstellt, hat es jedoch die schnellste Anstiegszeit für ein gegebenes Maß an Rauschunterdrückung eines beliebigen Zeitbereichsfilters. Egal, was, dann müssen Sie Kompromisse zwischen Rauschunterdrückung und Stehzeit. Der gleitende Durchschnitt ist ein ausgezeichneter Glättungsfilter, aber seine Frequenzabsenkung ist langsam und seine Sperrbanddämpfung ist schrecklich, was es zu einem schrecklichen Tiefpaßfilter macht. Dies ist typisch, dass ein Digitalfilter für die Zeitbereichsleistung oder die Frequenzbereichsleistung optimiert werden kann, jedoch nicht für beide. Gefilterter Sinc-Tiefpaßfilter Ein geeigneter FIR-Filter für Frequenzbereich ist das Fenster-Sinc-Filter. Dieses Tiefpaßfilter verwendet die sinc-Funktion (sin (x) x) für seinen Filterkernel, wobei der Wert der Kernkomponenten gegeben ist durch: wobei fc die gewünschte Grenzfrequenz ist, die als Bruchteil der Abtastfrequenz ausgedrückt wird. Wenn der Filterkernel eine unendliche Anzahl von Punkten hatte, wäre das Ergebnis ein idealer Tiefpassfilter ohne Durchlaßbandwelligkeit, unendliche Dämpfung im Stopband und ein infinitesimales Übergangsband. Leider ist eine unendliche Anzahl von Punkten keine gute Größe für einen Filterkernel. Eine einfache Lösung besteht darin, die Anzahl der Punkte im Kernel zu begrenzen, indem man M1 Punkte um das Zentrum der Symmetrie wählt und den Rest ignoriert. Dies setzt die übrigen Werte auf Null. Auswählen eines Fensters Der Wert von M setzt die Roll-off-Eigenschaften des Filters. Mit einer unendlichen Anzahl von Punkten ist der Roll-Off unendlich steil: Der Output geht von einem auf Null in einem einzigen Sample. Bei einer endlichen Zahl ist die Übergangsbandbandbreite gegeben durch: Wo die Bandbreite als Bruchteil der Abtastfrequenz ausgedrückt wird und zwischen 0 und 0,5 liegen muß. Ein einfaches Abschneiden der sinc-Funktion zur Begrenzung der Anzahl von Punkten führt jedoch zu einigen Problemen in dem resultierenden Frequenzgang, wie in Fig. 5 gezeigt. Die Unstetigkeit in der Impulsantwort verursacht Welligkeit im Durchlaßband und verringert die Stoppbanddämpfung. Zur Lösung dieses Problems verwendet das windowed-sinc-Filter einen Filterkernel, der das Produkt der sinc-Funktion und einer gleichmäßig verjüngten Fensterfunktion ist. Abbildung 5: 160Die Verkürzung der sinc-Funktion zur Begrenzung der Anzahl der Punkte führt zu einigen Problemen im resultierenden Frequenzgang. Eine Vielzahl solcher Fensterfunktionen sind möglich, aber zwei der nützlichsten sind die Blackman - und Hamming-Fenster. Beide sind mathematisch abgeleitete Funktionen, die die Funktion und ihre erste Ableitung an den Endpunkten auf Null bringen, was zu einem viel glatteren Frequenzgang führt. Das Blackman-Fenster hat die bessere Stoppbanddämpfung der beiden: -74 dB gegenüber -53 dB für das Hamming-Fenster. Das Hamming-Fenster hingegen hat einen etwa 20-mal schnelleren Roll-off. Bilden von anderen Filtern Mit einem guten Tiefpassfilter in der Hand, sind die anderen gängigen Arten von Frequenz-Domain-Filter leicht zu erhalten. Sie können beispielsweise ein Hochpaßfilter direkt aus der Impulsantwort eines Tiefpaßfilters entwerfen. Es gibt zwei Möglichkeiten, diese Umwandlung zu bewirken: spektrale Inversion und spektrale Umkehrung. Die spektrale Inversion gibt einen Frequenzgang, der eine Umkehrung (umgekehrt von oben nach unten) des entsprechenden Tiefpaßfilters ist. Sie berechnen die Koeffizienten, indem Sie das Vorzeichen aller Kernelkomponenten außer dem Zentrum umkehren. Die neue Mittelkomponente ist einfach (1 - die alte Mittelkomponente). Abbildung 6 zeigt schematisch, wie dies funktioniert. Der Hochpaßfilterausgang ist einfach der Tiefpaßfilterausgang, der von einem Allpaßfilter (der Deltafunktion) subtrahiert wird. Abbildung 6: 160 Hochpassfilter. Spektrale Umkehrung ist weniger intuitiv. In diesem Ansatz ändern Sie das Vorzeichen von alternativen Kernelkomponenten. Tatsächlich haben Sie den Filterkernel mit einer Sinusfrequenz multipliziert, wobei die Frequenz eine Hälfte der Abtastrate beträgt, wodurch der Frequenzgang um f s 2 verschoben wird. Dies führt zu einem Frequenzgang, der von links nach rechts umgekehrt wird. Der Ansatz arbeitet, weil der Frequenzgang eines beliebigen digitalen Filters symmetrisch um die Nullfrequenz liegt und sich bei der Abtastfrequenz wiederholt. Wie in Abbildung 7 dargestellt. Spektrale Umkehr schiebt wirksam den Frequenzgang des Tiefpaßfilters um. Abbildung 7: 160Spektral-Umkehrung schiebt effektiv den Frequenzgang des Tiefpaßfilters um. Mit beiden Tiefpaß - und Hochpaß-Filtern in der Hand, ist es einfach, zu sehen, wie man einen Band-Ausschuss zurückbaut. Fügen Sie einfach die Ergebnisse der beiden Filter zusammen, um die Gesamtreaktion zu erhalten. Der Bandrückweis-Kernel ist die Vektorsumme der beiden Filterkerne. Sie können spektrale Inversion oder spektrale Umkehrung auf dem Band-Reject-Filter verwenden, um ein Bandpassfilter zu erhalten. Sie können auch ein Bandpassfilter erstellen, indem Sie die Tief - und Hochpassfilter kaskadieren (siehe Abbildung 8). Wenn Sie einen einzelnen Filter mit den gleichen Eigenschaften benötigen, müssen Sie die Kernel der beiden Filter zusammenfalten, um den Bandpassfilterkernel zu erzeugen. Abbildung 8: 160Bandpass-Filter. Diese einfachen FIR-Filter können viele bescheidene Anwendungsanforderungen erfüllen. Sie können ineffizient zu implementieren, und ein IIR (rekursive) Filter kann, was Sie stattdessen benötigen. Um eine IIR zu erstellen, müssen Sie die Z-Transformation verwenden. Die Z-Transformation ist das digitale Äquivalent der Laplace-Transformation, die von analogen Filter-Designern verwendet wird: Wo s s j w. Die reellen und imaginären Achsen der S-Ebene, auf denen die Filterpole und Nullen aufgetragen sind. Wenn Sie die Zeitvariable durch die Stichprobenzahl n ersetzen, geben Sie r e - s ein. Und definieren z re jw erhalten Sie: Die allgemeine Gleichung für einen Rekursionsfilter ist die Differenzgleichung: Nehmen Sie die Z-Transformation dieser Gleichung und Sammeln von Begriffen erhalten Sie: Dies ist die Transfer-Funktion des IIR-Filter in einer Form, die direkt ausgedrückt Gibt die Filterkoeffizienten. Die Struktur des IIR-Entwurfs ist in Abbildung 9 dargestellt. Abbildung 9: 160Struktur des IIR-Entwurfs. Sie brauchen nicht alle diese Komplexität, jedoch. Wenn Sie wollen, ist ein einfaches Tiefpassfilter, entsprechend einer RC-Schaltung, die einpolige Version. In diesem Fall ist eine 0 1-x und b 1 x. Alle anderen Terme sind Null. Der Parameter x bestimmt die Größe des Abfalls zwischen den Abtastwerten und kann aus xe -1 d ermittelt werden, wobei d die Anzahl der Abtastwerte ist, die für eine Stufeneingabe benötigt werden, um auf 36,8 ihres Endwertes abzusinken. Dies entspricht der RC-Zeitkonstante der entsprechenden Analogschaltung. Ähnlich hat das Äquivalent zu einer Hochpass-RC-Schaltung die Werte a 0 (1x) 2, a 1 - (1x) 2 und b 0 x. Ein alternatives Verfahren zur Auswahl von x ist die Verwendung von x e -2 p fc. Dabei ist fc die 3dB-Grenzfrequenz, ausgedrückt als Bruchteil der Abtastfrequenz mit einem Wert zwischen 0 und 0,5. Wenn Sie über diese einfachen Filter zu bewegen müssen, ist Ihre beste Wette, einige der hervorragenden DSP-Design-Software zur Verfügung zu verwenden. Wenn Sie Ihre Hand ohne ein spezielles Werkzeug versuchen möchten, können Sie einen beliebigen digitalen Filter wie Sie ein analoges Filter entwerfen. Bestimmen Sie zuerst die analogen Pole und Nullen in der S-Ebene, und verwenden Sie dann die Substitutionen aus der Ableitung der Z-Transformation. Dies gibt Ihnen die Pole und Nullen in der Z-Ebene, so dass Sie die Übertragungsfunktion schreiben als: Sobald Sie wissen, die Pole und Nullen, die Sie wollen, können Sie sie anschließen, tun Sie ein wenig algebraische Manipulation, um die Gleichung in die andere Form setzen , Und liest die Filterkoeffizienten ab. Natürlich ist es nicht Ende dort. Endliche Wortlänge Arithmetik und Rundungsfehler können die effektiven Pole und Nullen weit genug verschieben, um den Filter instabil zu machen. Nur sorgfältige Tests und Tweaking können Sie einen benutzerdefinierten Filter, der wie vorgesehen funktioniert zu entwickeln.


No comments:

Post a Comment