Sunday 5 November 2017

Moving Average Signalverarbeitung


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 haben eine bessere Frequenzbereichsleistung 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, als ein Gaußscher Impuls aufgrund der unterschiedlichen Pfade, die von den Photonen innerhalb der Faser aufgenommen werden, 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 besteht 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). Zum Beispiel, erwarten, dass ein 100-Punkte-Gaussian 1000-mal langsamer als ein gleitender Durchschnitt mit Rekursion. Ich habe eine Reihe von Daten und ein Maß an jedem dieser Termine. Id wie zu berechnen einen exponentiellen gleitenden Durchschnitt für jeden der Termine. Weiß jemand, wie dies zu tun Im neu zu python. Es scheint nicht, dass Durchschnittswerte in die Standard-Python-Bibliothek, die mich als ein wenig seltsam schlägt gebaut werden. Vielleicht Im nicht auf der Suche nach der richtigen Stelle. Also, angesichts der folgenden Code, wie könnte ich berechnen die bewegten gewichteten Durchschnitt der IQ-Punkte für Kalendertermine (theres vermutlich eine bessere Art und Weise, die Daten zu strukturieren, würde jeder Rat geschätzt werden) Ask Jan 28 09 at 18:01 My python is a Etwas rostig (jedermann kann fühlen frei, diesen Code zu redigieren, um Korrekturen vorzunehmen, wenn Ive die Syntax irgendwie verwirrte), aber hier geht. Diese Funktion bewegt sich von dem Ende der Liste an den Anfang rückwärts und berechnet den exponentiellen gleitenden Durchschnitt für jeden Wert, indem sie rückwärts arbeitet, bis der Gewichtungskoeffizient für ein Element kleiner als der gegebene Wert ist. Am Ende der Funktion kehrt es die Werte um, bevor die Liste zurückgegeben wird (so dass sie in der richtigen Reihenfolge für den Aufrufer liegen). (SEITE HINWEIS: wenn ich eine andere Sprache als Python verwendet, erstellen Id eine vollständige Größe leere Array zuerst und dann füllen sie rückwärts-Reihenfolge, so dass ich wouldnt haben, um es am Ende umzukehren. Aber ich glaube nicht, können Sie erklären Eine große leere Array in python. And in Python-Listen, Anhängen ist viel weniger teuer als vorangestellt, weshalb ich baute die Liste in umgekehrter Reihenfolge. Korrigieren Sie mich, wenn Im falsch.) Das Alpha-Argument ist der Zerfallsfaktor auf jeder Iteration. Zum Beispiel, wenn Sie ein Alpha von 0,5 verwendet haben, würde der heutige gleitende Durchschnittswert aus den folgenden gewichteten Werten bestehen: Natürlich, wenn Sie eine riesige Palette von Werten erhalten haben, werden die Werte von zehn oder fünfzehn Tagen nicht viel dazu beitragen Heute gewichteter Durchschnitt. Mit dem epsilon-Argument können Sie einen Cutoff-Punkt festlegen, unterhalb dessen Sie sich nicht mehr um alte Werte kümmern (da deren Beitrag zum heutigen Wert unbedeutend ist). Youd rufen die Funktion so etwas wie folgt auf: Ich weiß nicht, Python, aber für die Mittelung Teil, meinst du ein exponentiell abklingendes Tiefpassfilter des Formulars, wo Alpha-dttau, dt der Zeitstep des Filters , Tau die Zeitkonstante des Filters (die variable-timestep Form davon ist wie folgt, nur Clip dttau auf nicht mehr als 1,0) Wenn Sie etwas wie ein Datum filtern möchten, stellen Sie sicher, dass Sie in eine Gleitkommazahl konvertieren Wie von Sekunden seit 1. Januar 1970. antwortete Jan 28 09 um 18:10 Ich fand das oben Code-Snippet von Earino ziemlich nützlich - aber ich brauchte etwas, das kontinuierlich glatt einen Strom von Werten könnte - also habe ich es umgestaltet: und ich benutze Es wie folgt: (wobei Pin. read () erzeugt den nächsten Wert Id wie zu konsumieren). Antwortete am 12. Februar 14 um 20:35 Im immer Berechnen EMAs mit Pandas: Hier ist ein Beispiel, wie es zu tun: Mehr infos über Pandas EWMA: beantwortet Oct 04 15 am 12:42 Don39t neuere Versionen von Pandas haben neue und bessere Funktionen. Ndash Cristian Ciupitu Mai 11 16 at 14:10 Beachten Sie, dass im Gegensatz zu ihrer Kalkulationstabelle, ich nicht berechnen die SMA, und ich nicht warten, um die EMA nach 10 Proben zu generieren. Dies bedeutet, meine Werte unterscheiden sich geringfügig, aber wenn Sie es Diagramm, es folgt genau nach 10 Proben. Während der ersten 10 Samples ist die EMA I berech - nungsgemäß geglättet. Ich habe an vielen Stellen gelesen, dass der Moving-Median ein wenig besser ist als Moving Average für einige Anwendungen, weil er weniger empfindlich auf Ausreißer reagiert. Ich wollte diese Aussage auf reale Daten testen, aber ich kann diesen Effekt nicht sehen (grün: median, rot: durchschnittlich). Siehe hier: Ich habe mit verschiedenen Werten für Fensterbreite (hier im Code 1000) versucht, und es war immer dasselbe: der bewegliche Median ist nicht besser als gleitender Durchschnitt (d. h. nicht weniger empfindlich auf Ausreißer). Das gleiche mit Fensterbreite 10000 (10000 die Spitzenbreite). Können Sie ein Beispiel, dass bewegende Median ist weniger empfindlich auf Ausreißer als gleitenden Durchschnitt und wenn möglich mit dem Beispiel. WAV-Datei-Daten-Set (Download-Link). D. h. es ist möglich, einen bewegten Median auf diesen Daten zu machen, so daß das Ergebnis wie diese gelbe Kurve ist (d. h. keine Spitze mehr) Dies ist nicht wirklich eine Antwort, aber ich dachte, dass ich berichte, was ich sehe und nach weiteren Informationen frage. Ive geladen Ihre test. wav Akte und ich kann das Signal sehen, das unten gezeichnet wird. So was youre, das in den Diagrammen erhält, die Sie darstellen, ist nicht soviel der Mittelwert, aber ist mehr wie eine Hüllkurve des Signals. Das zweite Problem ist, dass das Signal tatsächlich ein Teil des Signals zu sein scheint. Wenn ich in den Blip zoomen, dann ist dies, was ich sehe: Was sind Sie wirklich versuchen zu erreichen Danke für das Feedback. Unten ist einige R-Code, der die folgenden: Lädt die WAV-Datei. Nimmt den Absolutwert des Signals an (es wird durch die waveR-Bibliothek in den linken Kanal geladen). Führt einen 100-stelligen gleitenden Mittelwertfilter auf die Daten durch, um etwas näher an die Hüllkurve zu kommen (rotes Signal). Dann wendet ein Medianfilter der Längen 201, 2001 und 4001 auf das Ergebnis an (blaues Signal). Aus der Handlung unten, die beste Leistung ist die 4001 Länge ein. Andernfalls ist die Wirkung der Störung noch vorhanden. Die einzige Sache, die ich falsch jetzt sehen kann, ist, dass der Umschlag nicht mit dem zutreffenden Umschlag sowie Identifikation wie zusammenbringt. Ein besserer Hüllkurvendetektor könnte dies verbessern (z. B. das analytische Signal oder dergleichen). Unten ist eine Auftragung der berechneten Median-gefilterten Hüllkurve, die auf dem ursprünglichen Signal überlagert ist. Vielen Dank für die Zeit, die Sie für diese Frage verbracht In der Tat, ich den Mittelwert und Mittelwert der absolute Wert des Signals. Und ja, das gibt eine Vorstellung von dem Umschlag, das ist, was ich will. Was ich erwartete (dank Median statt Mittel) war so etwas. Bildschirmfoto. Unabhängig von der Fensterbreite für den Median. Die Spitze ist immer da. Während viele Dokumente sagen quotthe Median hat den Vorteil der Senkung der Wirkung der Ausreißer Wertequot. Ndash Basj Nov 30 15 am 14:01 Richtig, also fragt die Frage I39m: quotoutlier von whatquot. -) Unter direkten Median oder Mittelwert der Daten, die Sie haben, werden unsinnige Ergebnisse liefern. Die mittlere Filterung funktioniert nur dann gut, wenn einige Proben (bezogen auf die Fensterlänge) außerhalb des erwarteten Bereichs liegen. Da die Daten, die Sie haben, schwingt positiv und negativ, ist der Median isn39t wirklich geeignet für sie. Unter dem Median des Umschlags sollte besser funktionieren. Sie können sogar einen einfachen Tiefpaßfilter auf den absoluten Wert setzen, um einen stabilen Hüllkurvenwert zu erhalten. Ndash Peter K. 9830 Nov 30 15 am 14:05

No comments:

Post a Comment