Die Wissenschaftler und Ingenieure Leitfaden für digitale Signalverarbeitung Von Steven W. Smith, Ph. D. Kapitel 15: Verschieben von Durchschnittsfiltern Verwandte des Moving Average Filters In einer perfekten Welt müssten Filter-Designer nur mit Zeitdomänen - oder frequenzbereichskodierten Informationen umgehen, aber niemals eine Mischung aus beiden im selben Signal. Leider gibt es einige Anwendungen, bei denen beide Domains gleichzeitig wichtig sind. Zum Beispiel, Fernsehsignale fallen in diese fiese Kategorie. Die Videoinformation wird im Zeitbereich kodiert, dh die Form der Wellenform entspricht den Mustern der Helligkeit in dem Bild. Während der Übertragung wird das Videosignal jedoch entsprechend seiner Frequenzzusammensetzung, wie etwa seiner Gesamtbandbreite, behandelt, wie die Trägerwellen für die Tonampelfarbe addiert werden, die Eliminierungsampere-Wiederherstellung der Gleichspannungskomponente usw. Als weiteres Beispiel ist eine elektromagnetische Interferenz Wird am besten im Frequenzbereich verstanden, auch wenn die Signalinformation im Zeitbereich codiert wird. Zum Beispiel könnte die Temperaturüberwachung in einem wissenschaftlichen Experiment mit 60 Hertz von den Stromleitungen, 30 kHz von einem Schaltnetzteil oder 1320 kHz von einer lokalen AM-Funkstation verunreinigt sein. Verwandte des gleitenden Durchschnittsfilters weisen eine bessere Frequenzbereichsleistung auf und können in diesen gemischten Domänenanwendungen nützlich sein. Multiple-Pass-Gleit-Durchschnittsfilter beinhalten, daß das Eingangssignal zweimal oder mehrmals durch einen gleitenden Durchschnittsfilter geleitet wird. Abbildung 15.3a zeigt den Gesamtfilterkern, der aus einem, zwei und vier Durchgängen resultiert. Zwei Durchläufe entsprechen der Verwendung eines dreieckigen Filterkerns (eines rechteckigen Filterkerns, der mit sich selbst konstruiert wurde). Nach vier oder mehr Durchgängen sieht der äquivalente Filterkernel wie ein Gaußscher (Rückruf des zentralen Grenzwertsatzes) aus. Wie in (b) gezeigt, erzeugen mehrere Durchgänge eine s-förmige Sprungantwort im Vergleich zu der geraden Linie des einzigen Durchgangs. Die Frequenzantworten in (c) und (d) sind durch Gl. 15-2 multipliziert mit sich für jeden Durchlauf. Das heißt, jede Zeitbereichs-Faltung führt zu einer Multiplikation der Frequenzspektren. Abbildung 15-4 zeigt den Frequenzgang zweier anderer Verwandter des gleitenden Durchschnittsfilters. Wenn ein reiner Gaußscher als Filterkern verwendet wird, ist der Frequenzgang auch ein Gaußscher, wie in Kapitel 11 erläutert. Der Gaußsche ist wichtig, weil er die Impulsantwort vieler natürlicher und künstlicher Systeme ist. Beispielsweise wird ein kurzer Lichtimpuls, der in eine lange faseroptische Übertragungsleitung eintritt, aufgrund der unterschiedlichen Pfade, die von den Photonen innerhalb der Faser aufgenommen werden, als ein Gauss-Puls austreten. Der Gaußsche Filterkernel wird auch weitgehend in der Bildverarbeitung verwendet, da er einzigartige Eigenschaften hat, die schnelle zweidimensionale Windungen ermöglichen (siehe Kapitel 24). Der zweite Frequenzgang in Fig. 15-4 entspricht der Verwendung eines Blackman-Fensters als Filterkernel. (Der Begriff Fenster hat hier keine Bedeutung, er ist einfach Teil des akzeptierten Namens dieser Kurve). Die genaue Form des Blackman-Fensters ist in Kapitel 16 gegeben (Gleichung 16-2, Abb. 16-2), sie sieht jedoch sehr ähnlich wie ein Gaußscher. Wie sind diese Verwandten des gleitenden Durchschnittsfilters besser als der gleitende Mittelfilter selbst? Drei Wege: Erstens, und am wichtigsten, haben diese Filter eine bessere Stopbanddämpfung als das gleitende Mittelfilter. Zweitens verjüngen sich die Filterkerne zu einer kleineren Amplitude nahe den Enden. Es sei daran erinnert, dass jeder Punkt in dem Ausgangssignal eine gewichtete Summe einer Gruppe von Abtastungen von dem Eingang ist. Wenn sich der Filterkern verjüngt, werden die Abtastwerte im Eingangssignal, die weiter entfernt sind, weniger Gewicht als die in der Nähe befindlichen. Drittens sind die Schrittantworten glatte Kurven, und nicht die abrupte gerade Linie des gleitenden Durchschnitts. Diese letzten beiden sind in der Regel von begrenztem Nutzen, obwohl Sie Anwendungen finden könnten, wo sie echte Vorteile sind. Der gleitende Durchschnittsfilter und seine Verwandten sind alle ungefähr gleich, wenn man zufälliges Rauschen reduziert, während eine scharfe Sprungantwort beibehalten wird. Die Mehrdeutigkeit liegt darin, wie die Anstiegszeit der Sprungantwort gemessen wird. Wenn die Anstiegszeit von 0 bis 100 des Schritts gemessen wird, ist der gleitende Durchschnittsfilter das beste, was Sie tun können, wie zuvor gezeigt. Im Vergleich dazu misst die Messung der Risse von 10 bis 90 das Blackman-Fenster besser als das gleitende Mittelfilter. Der Punkt ist, das ist nur theoretische Squabbeln betrachten diese Filter gleich in diesem Parameter. Der größte Unterschied in diesen Filtern ist die Ausführungsgeschwindigkeit. Unter Verwendung eines rekursiven Algorithmus (beschrieben als nächstes) läuft der gleitende Durchschnittfilter wie ein Blitz in Ihrem Computer. In der Tat ist es die schnellste digitale Filter zur Verfügung. Mehrere Durchgänge des gleitenden Durchschnitts werden entsprechend langsamer, aber immer noch sehr schnell sein. Im Vergleich dazu sind die Gauß - und die Blackman-Filter quälend langsam, weil sie die Faltung verwenden müssen. Denken Sie einen Faktor von zehnmal die Anzahl der Punkte im Filterkernel (basierend auf der Multiplikation, die etwa zehnmal langsamer als die Addition ist). Beispielsweise erwarten Sie, dass ein 100-Punkt-Gaussian 1000-mal langsamer als ein gleitender Durchschnitt ist. FIR-Filtergrundlagen 1.1 Was sind FIR-Filterquot-FIR-Filter sind einer von zwei Primärtypen von Digitalfiltern, die in DSP-Anwendungen (Digital Signal Processing) verwendet werden Andere Art ist IIR. 1.2 Was bedeutet "FIRquot" bedeutet "FIRquot" bedeutet "FInite Impulse Responsequot". Wenn Sie einen Impuls, das heißt, ein einziges quadratisches Beispiel, gefolgt von vielen quot0quot Proben, setzen, werden Nullen herauskommen, nachdem das quot1quot Beispiel seinen Weg durch die Verzögerungslinie des Filters gemacht hat. 1.3 Warum ist die Impulsantwort quotfinitequot Im allgemeinen Fall ist die Impulsantwort endlich, da es keine Rückmeldung in der FIR gibt. Ein Mangel an Feedback garantiert, dass die Impulsantwort endlich ist. Daher ist der Begriff "endliche Impulsantwort" annähernd gleichbedeutend mit einer Quotno-Rückmeldung. Wenn jedoch die Rückkopplung verwendet wird, ist die Impulsantwort endlich, der Filter ist jedoch immer noch ein FIR. Ein Beispiel ist das gleitende Mittelfilter, bei dem jedes Mal, wenn eine neue Probe eintritt, subtrahiert (rückgekoppelt) wird. Dieser Filter hat eine endliche Impulsantwort, obwohl er Rückkopplung verwendet: nach N Abtastungen eines Impulses die Ausgabe Wird immer Null sein. 1.4 Wie kann ich aussprechen firquot Einige Leute sagen, die Buchstaben F-I-R anderen Menschen auszusprechen, als wäre es eine Art von Baum. Wir ziehen den Baum vor. (Der Unterschied besteht darin, 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 "Infinite Impulse Responsequot (IIR)" sein. (Siehe dspGurus IIR FAQ.) IIR-Filter verwenden Feedback, so dass bei der Eingabe eines Impulses die Ausgabe theoretisch unendlich klingelt. 1.6 Wie FIR-Filter mit IIR-Filtern vergleichen Jedes hat Vor - und Nachteile. Insgesamt aber überwiegen die Vorteile von FIR-Filtern 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 quasi-lineare Phasenquotten konzipieren (und sind in der Regel). Einfach ausgedrückt, verzögern lineare Phasenfilter das Eingangssignal, aber donrsquot verzerrt seine Phase. Sie sind einfach zu implementieren. Bei den meisten DSP-Mikroprozessoren kann die FIR-Berechnung durch Schleifen einer einzigen Anweisung durchgeführt werden. Sie eignen sich für Mehrpreisanwendungen. Mit Multi-Rate bedeuten wir entweder einen Dekrementquot (Reduzierung der Abtastrate), eine Interpolation (Erhöhung der Abtastrate) oder beides. Ob Dezimierung oder Interpolation, die Verwendung von FIR-Filtern erlaubt es, einige der Berechnungen wegzulassen, wodurch eine wichtige Recheneffizienz geschaffen wird. Im Gegensatz dazu, wenn IIR-Filter verwendet werden, muss jeder Ausgang individuell berechnet werden, auch wenn dieser Ausgang verworfen wird (so dass die Rückkopplung wird in den Filter integriert werden). Sie haben gewünschte numerische Eigenschaften. In der Praxis müssen alle DSP-Filter mit Hilfe einer Finite-Precision-Arithmetik, dh einer begrenzten Anzahl von Bits, implementiert werden. Die Verwendung von Finite-Precision-Arithmetik in IIR-Filtern kann aufgrund des Feedbacks erhebliche Probleme verursachen, aber FIR-Filter ohne Rückkopplung können gewöhnlich mit weniger Bits implementiert werden, und der Konstrukteur hat weniger praktische Probleme, die mit der nicht idealen Arithmetik zusammenhängen. Sie können mit Hilfe von fractional arithmetic implementiert werden. Im Gegensatz zu IIR-Filtern ist es immer möglich, ein FIR-Filter unter Verwendung von Koeffizienten mit einer Grße von weniger als 1,0 einzusetzen. (Die Gesamtverstärkung des FIR-Filters kann bei Bedarf an seinem Ausgang eingestellt werden.) Dies ist ein wichtiger Aspekt bei der Verwendung von Festpunkt-DSPs, da sie 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 und Berechnung benötigen, um eine gegebene Filtercharakteristik zu erreichen. Auch sind bestimmte Reaktionen mit FIR-Filtern nicht praktikabel. 1.7 Welche Begriffe werden bei der Beschreibung von FIR-Filtern verwendet? Impulsantwort - Der Impulsantwortfaktor eines FIR-Filters ist eigentlich nur der Satz von FIR-Koeffizienten. (Wenn Sie ein quotimplusequot in einen FIR-Filter setzen, der aus einem quotierten Quot-Sample besteht, gefolgt von vielen quot0quot-Samples, ist das Ausgangssignal des Filters die Menge der Koeffizienten, wenn sich die 1 Sample nacheinander um jeden Koeffizienten bewegt, um die Ausgabe zu bilden. Tippen - Ein FIR quottapquot ist einfach ein Koeffizientenverzögerungspaar. Die Anzahl der FIR-Anzapfungen (oft als "Anfasser" bezeichnet) ist ein Hinweis auf 1) die zur Implementierung des Filters erforderliche Speicherkapazität, 2) die Anzahl der erforderlichen Berechnungen und 3) die Menge des Filterfilters, Multiply-Accumulate (MAC) - In einem FIR-Kontext ist ein MACquot der Vorgang des Multiplizierens eines Koeffizienten mit dem entsprechenden verzögerten Datenabtastwert und der Akkumulierung des Ergebnisses. FIRs erfordern normalerweise einen MAC pro Hahn. Die meisten DSP-Mikroprozessoren implementieren die MAC-Operation in einem einzigen Befehlszyklus. Transition Band - Das Frequenzband zwischen Passband - und Stopband-Kanten. Je schmaler das Übergangsband ist, desto mehr Taps werden benötigt, 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. Zirkulärer Puffer - Ein spezieller Puffer, der zirkulär ist, weil eine Inkrementierung am Ende bewirkt, dass er sich zum Anfang wickelt, oder weil das Dekrementieren von Anfang an bewirkt, dass es bis zum Ende wickelt. Zirkuläre Puffer werden oft von DSP-Mikroprozessoren bereitgestellt, um den Quotientenquot der Proben durch die FIR-Verzögerungsleitung zu implementieren, ohne die Daten im Speicher wörtlich bewegen zu müssen. Wenn ein neues Sample in den Puffer eingefügt wird, ersetzt es automatisch die älteste. Moving Average Filter Beschreibung Der MovingAverageFilter implementiert einen Tiefpass-Mittelwert-Filter. Der MovingAverageFilter ist Teil der Preprocessing Module. Ein Beispiel für ein Signal (Sinus-Zufallsrauschen), das unter Verwendung eines gleitenden Durchschnittsfilters gefiltert wurde. Das rote Signal ist das ursprüngliche Signalrauschen, das grüne Signal das gefilterte Signal unter Verwendung eines gleitenden Durchschnittsfilters mit einer Fenstergröße von 5 und das blaue Signal das gefilterte Signal unter Verwendung eines gleitenden Durchschnittsfilters mit einer Fenstergröße von 20. MovingAverageFilterExampleImage1. Jpg Vorteile Der MovingAverageFilter eignet sich gut zum Entfernen einer kleinen Menge von hochfrequenten Rauschen aus einem N-dimensionalen Signal. Nachteile Der Hauptnachteil des MovingAverageFilters besteht darin, dass die Fenstergröße des Filters groß sein muss, um deutlich hochfrequentes Rauschen auszufiltern. Das Problem mit einem großen Filterfenster besteht darin, dass dies eine große Latenz in jedem Signal hervorruft, das durch den Filter hindurchgeht, was für Realzeitanwendungen nicht vorteilhaft sein kann. Wenn Sie feststellen, dass Sie ein großes Filterfenster benötigen, um hochfrequentes Rauschen zu filtern und die Latenz, die durch diese Fenstergröße induziert wird, nicht für Ihre Echtzeitanwendung geeignet ist, dann möchten Sie vielleicht einen Double Moving Average Filter oder einen Low Pass Filter ausprobieren stattdessen. Beispielcode GRT MovingAverageFilter Beispiel Dieses Beispiel zeigt, wie das GRT MovingAverageFilter PreProcessing Module erstellt und verwendet wird. Der MovingAverageFilter implementiert einen Tiefpass-Durchschnittsfilter. In diesem Beispiel erstellen wir eine Instanz eines MovingAverageFilters und verwenden diese, um einige Dummy-Daten zu filtern, die aus einem Sinuswellen-Zufallsrauschen 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 einer neuen MovingAverageFilter-Instanz mit einer bestimmten Fenstergröße für ein 1-dimensionales Signal - Filtern von Daten mit dem MovingAverageFilter - Speichern der MovingAverageFilter-Einstellungen in einer Datei - Laden der MovingAverageFilter-Einstellungen aus einer Datei includeGRT. hquot Mit Namensraum GRT int main 40 int argc. Const char argv 91 93 41 123 Erstellen einer neuen Instanz eines gleitenden Durchschnittsfilters mit einer Fenstergröße von 5 für ein 1-dimensionales Signal MovingAverageFilter-Filter 40 5. 1 41 Erstellen und öffnen Sie eine Datei, um die Datei für die Datenstromdatei zu speichern. Öffnen Sie 40 quotMovingAverageFilterData. txtquot. Fstream. Out 41 Erzeugen Sie einige Daten (Sinuswellenrauschen) und filtern Sie es doppelt x 0 const UINT M 1000 Random random für 40 UINT i 0 i lt M i 41 123 Doppelsignal sin 40 x 41 random. GetRandomNumberUniform 40 - 0,2. 0,2 41 DoppelfilterValue-Filter. Filter 40 Signal 41 Datei ltlt Signal ltlt t ltlt gefiltertValue ltlt endl x TWOPI double 40 M 41 10 125 Schließen Sie die Datei. Close 40 41 Speichern Sie die Filtereinstellungen in einem Dateifilter. SaveSettingsToFile 40 quotMovingAverageFilterSettings. txtquot 41 Wir können die Einstellungen später bei Bedarf wieder laden. LoadSettingsFromFile 40 quotMovingAverageFilterSettings. txtquot 41 return EXITSUCCESS 125 Der MovingAverageFilter arbeitet auch mit jedem N-dimensionalen Signal: Erstellen Sie eine neue Instanz des MovingAverageFilters mit einer Fenstergröße von 10 für ein dreidimensionales Signal MovingAverageFilter filter 40 10. 3 41 Der Wert, den Sie filtern möchten Vektor lt doppelte gt Daten 40 3 41 Daten 91 0 93 0. Wert aus Sensordaten abrufen 91 1 93 0. Wert aus Sensordaten abrufen 91 2 93 0. Get value from sensor Filtern Sie den Signalvektor lt double gt filteredValue Filter. Filter 40 Daten 41 Code amp Ressourcen
No comments:
Post a Comment