Sunday, 8 January 2017

Moving Average As Faltung

Ich bin auf der Suche nach einem kleinen Leitfaden für die Verwendung von CONVN, um gleitende Mittelwerte in einer Dimension auf einer 3D-Matrix zu berechnen. Im bekommen ein wenig gefangen auf dem Spiegeln des Kernels unter der Haube und hoffe jemand könnte in der Lage sein, das Verhalten für mich zu klären. Eine ähnliche Post, die mich immer noch ein wenig verwirrt ist, ist hier: Ich habe tägliche Fluss - und Wetterdaten für eine Wasserscheide an verschiedenen Quellenorten. Die Matrix ist also so, dim 1 (die Zeilen) repräsentieren jeden Standort dim 2 (die Spalten) repräsentieren das Datum dim 3 (die Seiten) repräsentieren die unterschiedliche Art der Messung (Flusshöhe, Durchfluss, Niederschlag usw.) Das Ziel Ist zu versuchen und CONVN verwenden, um einen 21 Tage gleitenden Durchschnitt an jedem Standort, für jeden Beobachtungspunkt für jede Variable zu nehmen. Wie ich es verstehe, sollte ich nur in der Lage sein, einen Kernel wie: Ich habe versucht, herum zu spielen und erstellt einen anderen Kernel, der auch funktionieren sollte (glaube ich) und setzen ker2 als: Die Ergebnisse nicht ganz passen und Im fragen, ob ich die haben Abmessungen hier falsch für den Kernel. Jede Anleitung wird sehr geschätzt. BTW haben Sie einen symmetrischen Kernel, und so sollte das Spiegeln keine Auswirkungen auf die Faltungsausgabe haben. Was Sie angegeben haben, ist ein gleitender Standardkernel, und so sollte die Faltung bei der Suche nach dem gleitenden Durchschnitt funktionieren, wie Sie erwarten. Aber I39m ein wenig verwirrt, weil Sie sagte, die oben doesn39t Arbeit ndash Rayryeng Das ist völlig bis zu Ihnen :). Die Frage, die Sie haben, ist eine gültige (kein Wortspiel beabsichtigt), dass reist eine Menge Leute. Wenn Sie wollen, dass es bleibt, kann ich eine Antwort schreiben, die zusammenfasst, worüber wir gesprochen haben. Wenn Sie zurückziehen möchten, löschen Sie Ihre Antwort, that39s kein Problem überhaupt. Lassen Sie mich wissen, was Sie wollen ndash rayryeng Nach dem Kontext Ihrer Frage, haben Sie eine 3D-Matrix und Sie wollen den gleitenden Durchschnitt jeder Zeile unabhängig über alle 3D-Scheiben zu finden. Der obige Code sollte funktionieren (der erste Fall). Das gültige Flag gibt jedoch eine Matrix zurück, deren Größe in Bezug auf die Grenzen der Konvolution gültig ist. Werfen Sie einen Blick auf den ersten Punkt der Post, die Sie für weitere Details verbunden. Insbesondere fehlen die ersten 21 Einträge für jede Zeile aufgrund des gültigen Flags. Sein nur, wenn Sie zum 22. Eintrag jeder Reihe erhalten, wird der Faltungskernel vollständig innerhalb einer Reihe der Matrix enthalten und sein von diesem Punkt, wo Sie gültige Resultate erhalten (kein Wortspiel beabsichtigt). Wenn Sie diese Einträge an den Grenzen sehen möchten, dann müssen Sie die gleiche Flagge verwenden, wenn Sie die gleiche Größe Matrix wie die Eingabe oder die volle Flagge (die Standard ist), die Ihnen die Größe der Ausgabe ab der Sie beibehalten möchten beibehalten möchten Die extremsten äußeren Kanten, aber denken Sie daran, dass der gleitende Durchschnitt wird mit einem Bündel von Nullen getan werden und so die ersten 21 Einträge würde nicht sein, was Sie sowieso erwarten. Allerdings, wenn Im Interpretieren, was Sie fragen, dann die gültige Flagge ist, was Sie wollen, aber bedenken, dass Sie 21 Einträge fehlen, um für die Rand Fällen unterzubringen. Alles in allem sollte Ihr Code funktionieren, aber seien Sie vorsichtig, wie Sie die Ergebnisse interpretieren. BTW haben Sie einen symmetrischen Kernel, und so sollte das Spiegeln keine Auswirkungen auf die Faltungsausgabe haben. Was Sie spezifiziert haben, ist ein Standard-Moving-Mittelung Kernel, und so Faltung sollte bei der Suche nach dem gleitenden Durchschnitt arbeiten, wie Sie erwarten. Der bewegliche Durchschnitt als Filter Der gleitende Durchschnitt wird oft für das Glätten von Daten in Anwesenheit 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 gebräuchlichsten Filter in der Signalverarbeitung ist. Wenn man sie als Filter betrachtet, kann man sie beispielsweise mit gefensterten Filtern vergleichen (siehe Artikel zu Tiefpaß-, Hochpass - und Bandpass - und Bandsperrfiltern für Beispiele). Der Hauptunterschied zu diesen Filtern besteht darin, daß der gleitende Durchschnitt für Signale geeignet ist, für die die Nutzinformation im Zeitbereich enthalten ist. Von denen Glättungsmessungen durch Mittelung ein Paradebeispiel sind. Window-sinc-Filter, auf der anderen Seite, sind starke Künstler im Frequenzbereich. Mit Ausgleich in der Audioverarbeitung als typisches Beispiel. Es gibt einen detaillierteren Vergleich beider Arten von Filtern in Time Domain vs. Frequency Domain Performance von Filtern. Wenn Sie Daten haben, für die sowohl die Zeit als auch die Frequenzdomäne wichtig sind, dann möchten Sie vielleicht einen Blick auf Variationen auf den Moving Average werfen. Die eine Anzahl gewichteter Versionen des gleitenden Durchschnitts zeigt, die besser sind. Der gleitende Durchschnitt der Länge (N) kann so definiert werden, wie er üblicherweise implementiert ist, wobei der aktuelle Ausgabeabtastwert der Durchschnitt der vorhergehenden (N) Abtastwerte ist. Als Filter betrachtet, führt der gleitende Durchschnitt eine Faltung der Eingangsfolge (xn) mit einem rechteckigen Puls der Länge (N) und der Höhe (1N) durch (um den Bereich des Pulses und damit die Verstärkung des Filters zu erzeugen , 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 ungeradzahligen 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 genau ((N-1) 2). Der gleitende Durchschnitt kann dann exakt mit den ursprünglichen Daten ausgerichtet werden, indem er um eine ganze Zahl von Abtastwerten verschoben wird. Zeitdomäne Da der gleitende Durchschnitt eine Faltung mit einem rechteckigen Puls ist, ist sein Frequenzgang eine sinc-Funktion. Dies macht es ähnlich dem Dual des Fenstersynchronfilters, da es sich hierbei um eine Faltung mit einem Sinc-Puls handelt, der zu einem rechteckigen Frequenzgang führt. Es ist diese sinc Frequenzantwort, die den gleitenden Durchschnitt ein schlechter Darsteller im Frequenzbereich macht. Allerdings führt es sehr gut im Zeitbereich. Daher ist es perfekt, um Daten zu löschen, um Rauschen zu entfernen, während gleichzeitig eine schnelle Sprungantwort beibehalten wird (1). Für das typische Additiv-Weiß-Gauß-Rauschen (AWGN), das oft angenommen wird, bewirkt die Mittelung (N) - Proben, dass das SNR um einen Faktor (sqrt N) erhöht wird. Da das Rauschen für die einzelnen Proben unkorreliert ist, gibt es keinen Grund, jede Probe unterschiedlich zu behandeln. Daher wird der gleitende Durchschnitt, der jeder Probe das gleiche Gewicht gibt, die maximale Menge an Rauschen für eine gegebene Sprungantwortschärfe beseitigen. Implementierung Da es sich um ein FIR-Filter handelt, kann der gleitende Durchschnitt durch Faltung implementiert werden. Es hat dann die gleiche Effizienz (oder das Fehlen davon) wie jedes andere FIR-Filter. Sie kann aber auch rekursiv und effizient umgesetzt werden. Es folgt unmittelbar aus der Definition, daß diese Formel das Ergebnis der Ausdrücke für (yn) und (yn1) ist, dh, daß die Veränderung zwischen (yn1) und (yn) ein zusätzlicher Term (xn1N) ist Das Ende, während der Term (xn-N1N) von Anfang entfernt wird. In praktischen Anwendungen ist es oft möglich, die Division durch (N) für jeden Term auszulassen, indem die resultierende Verstärkung von (N) an einer anderen Stelle kompensiert wird. Diese rekursive Umsetzung wird viel schneller als Faltung. Jeder neue Wert von (y) kann mit nur zwei Additionen anstelle der (N) Additionen berechnet werden, die für eine einfache Implementierung der Definition erforderlich wären. Eine Sache, mit der Sie nach einer rekursiven Implementierung Ausschau halten, ist, dass Rundungsfehler akkumulieren. Dies kann ein Problem für Ihre Anwendung sein oder auch nicht, aber es bedeutet auch, dass diese rekursive Implementierung tatsächlich mit einer Integer-Implementierung besser funktionieren wird als mit Gleitkommazahlen. Dies ist sehr ungewöhnlich, da eine Gleitkomma-Implementierung gewöhnlich einfacher ist. Der Schluss davon muss sein, dass Sie die Nützlichkeit des einfachen gleitenden Durchschnittsfilters in Signalverarbeitungsanwendungen nie unterschätzen sollten. 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 jetztThe Scientist and Engineers Guide to Digitale Signalverarbeitung Von Steven W. Smith, Ph. D. Wie der Name andeutet, arbeitet das gleitende Mittelfilter durch Mittelung einer Anzahl von Punkten von dem Eingangssignal, um jeden Punkt im Ausgangssignal zu erzeugen. In Gleichung ist dies geschrieben: Wo ist das Eingangssignal, ist das Ausgangssignal und M ist die Anzahl der Punkte im Mittelwert. Beispielsweise ist bei einem 5-Punkt-Gleitmittelfilter Punkt 80 im Ausgangssignal gegeben durch: Alternativ kann die Gruppe von Punkten aus dem Eingangssignal symmetrisch um den Ausgangspunkt gewählt werden: Dies entspricht der Änderung der Summation in Gl . 15-1 von: j 0 bis M -1, bis: j - (M -1) 2 bis (M -1) 2. Zum Beispiel wird in einem 10-Punkt-gleitenden Durchschnittsfilter der Index j. Kann von 0 bis 11 (einseitige Mittelung) oder -5 bis 5 (symmetrische Mittelung) laufen. Symmetrische Mittelung erfordert, dass M eine ungerade Zahl ist. Die Programmierung ist etwas einfacher mit den Punkten auf nur einer Seite, jedoch ergibt sich eine relative Verschiebung zwischen den Eingangs - und Ausgangssignalen. Sie sollten erkennen, dass das gleitende Durchschnittsfilter eine Faltung mit einem sehr einfachen Filterkern ist. Beispielsweise hat ein 5-Punkt-Filter den Filterkern: 82300, 0, 15, 15, 15, 15, 15, 0, 08230. Das heißt, das gleitende Mittelfilter ist eine Faltung des Eingangssignals mit einem rechteckigen Puls mit einer Bereich von einem. Tabelle 15-1 zeigt ein Programm zum Implementieren des gleitenden Durchschnittsfilters.


No comments:

Post a Comment