Sunday, February 26, 2017

Matlab Signalverarbeitung Toolbox Moving Average

Das Berechnen eines laufenden Durchschnitts eines einfachen 1-D-Datenvektors scheint einfach genug. In der Tat behauptet die MATLAB-Dokumentation für FILTER etwas wie: Sie können Filter verwenden, um einen laufenden Durchschnitt zu finden, ohne eine for-Schleife zu verwenden. Dieses Beispiel findet den laufenden Durchschnitt eines 16-Element-Vektors unter Verwendung einer Fenstergröße von 3: Für meine Zwecke gibt es zwei ärgerliche Dinge über dieses Ergebnis: Ausgangspunkt n ist der Durchschnitt der Eingangspunkte n - (windowSize-1)..n (dh nicht zentriert, wie durch die horizontale Verschiebung belegt) und nach links von den verfügbaren Daten werden als Nullen behandelt. FILTFILT befasst sich mit beiden Fragen, hat aber andere Nachteile. Sein Teil des Signal Processing Toolbox, und es tut sich gut mit NaNs (die Id wie aus dem Mittelwert ausgeschlossen). Einige Leute auf FEX offensichtlich hatte die gleichen Frustrationen, aber es scheint seltsam, dass etwas, das diese einfache erfordert benutzerdefinierten Code. Anything Im fehlt hier gefragt Aug 10 10 at 21:39 Hmm. Gibt es sogar einen Weg, um die Polsterung zu tun und bekommen die durchschnittliche scheint, dass wenn sagen, 3 Bins fallen von der Kante im Vergleich zu 1, müssten Sie mit anderen Werten, um den richtigen Durchschnitt für die erste bin. Insbesondere müssen Sie mit dem Durchschnitt der gültigen Bins, die abhängig von dem Punkt unter Berücksichtigung pad. Also I39m nicht sicher, dass dies sogar mit padding ndash möglich ist. Mdmi; Ich muss den gleitenden Durchschnitt über N9 Tage erhalten. Das Array Im-Berechnen ist 4 Reihe von 365 Werten (M), die selbst Mittelwerte eines anderen Satzes von Daten sind. Ich möchte die Mittelwerte meiner Daten mit dem gleitenden Durchschnitt in einem Diagramm darstellen. Ich googeln ein wenig über gleitende Durchschnitte und den conv Befehl und fand etwas, das ich versuchte, in meinem Code umzusetzen: So grundsätzlich berechne ich meinen Durchschnitt und plot ihn mit einem (falschen) gleitenden Durchschnitt. Ich wählte die wts Wert direkt an der Mathworks-Website, so dass ist falsch. (Quelle: mathworks. nlhelpeconmoving-average-trend-estimation. html) Mein Problem aber ist, dass ich nicht verstehe, was dieses wts ist. Könnte jemand erklären, wenn es etwas mit den Gewichten der Werte zu tun hat: das ist in diesem Fall ungültig. Alle Werte werden gleich gewichtet. Und wenn ich das völlig falsch mache, könnte ich etwas Hilfe dabei haben Mein aufrichtigster Dank. Die Verwendung von conv ist eine hervorragende Möglichkeit, einen gleitenden Durchschnitt zu implementieren. In dem Code, den Sie verwenden, ist wts, wie viel Sie jeden Wert wiegen (wie Sie ahnen). Die Summe dieses Vektors sollte immer gleich Eins sein. Wenn Sie jeden Wert gleichmäßig gewichten und eine Größe N bewegten Filter dann tun möchten, würden Sie tun möchten Mit dem gültigen Argument in conv wird mit weniger Werten in Ms, als Sie in M ​​haben. Verwenden Sie diese, wenn Sie dont die Auswirkungen von Nullpolsterung. Wenn Sie die Signalverarbeitung Toolbox haben, können Sie cconv verwenden, wenn Sie einen kreisförmigen gleitenden Durchschnitt ausprobieren möchten. Etwas wie Sie sollten lesen, die conv und cconv Dokumentation für weitere Informationen, wenn Sie havent bereits. Documentation Dieses Beispiel zeigt, wie mit gleitenden Durchschnitt Filter und Resampling verwenden, um die Auswirkungen der periodischen Komponenten der Tageszeit auf stündliche Temperaturablesungen zu isolieren, sowie Entfernen Sie unerwünschte Leitungsrauschen aus einer offenen Spannungsmessung. Das Beispiel zeigt auch, wie die Pegel eines Taktsignals zu glätten sind, während die Kanten durch Verwendung eines Medianfilters bewahrt werden. Das Beispiel zeigt auch, wie ein Hampel-Filter verwendet wird, um große Ausreißer zu entfernen. Motivation Glättung ist, wie wir wichtige Muster in unseren Daten zu entdecken, während Sie Dinge, die unwichtig sind (d. H. Rauschen). Wir verwenden Filter, um diese Glättung durchzuführen. Das Ziel der Glättung ist es, langsame Änderungen im Wert zu produzieren, so dass seine einfacher zu sehen, Trends in unseren Daten. Manchmal, wenn Sie Eingangsdaten untersuchen, können Sie die Daten glatt machen, um einen Trend im Signal zu sehen. In unserem Beispiel haben wir eine Reihe von Temperaturmessungen in Celsius genommen jede Stunde am Logan Flughafen für den gesamten Monat Januar 2011. Beachten Sie, dass wir visuell sehen können, die Wirkung, die die Tageszeit auf die Temperaturwerte hat. Wenn Sie sich nur für die tägliche Temperaturschwankung im Laufe des Monats interessieren, tragen die stündlichen Fluktuationen nur zu Lärm bei, was die täglichen Variationen schwer unterscheiden kann. Um den Effekt der Tageszeit zu entfernen, möchten wir nun unsere Daten mit einem gleitenden Mittelfilter glätten. Ein Moving Average Filter In seiner einfachsten Form nimmt ein gleitender Durchschnittsfilter der Länge N den Durchschnitt jeder N aufeinanderfolgenden Samples der Wellenform an. Um einen gleitenden Mittelwertfilter auf jeden Datenpunkt anzuwenden, konstruieren wir unsere Koeffizienten unseres Filters, so dass jeder Punkt gleich gewichtet ist und 124 zum Gesamtdurchschnitt beiträgt. Dies gibt uns die durchschnittliche Temperatur über jeden Zeitraum von 24 Stunden. Filterverzögerung Beachten Sie, dass der gefilterte Ausgang um etwa zwölf Stunden verzögert wird. Dies ist auf die Tatsache zurückzuführen, dass unser gleitender Durchschnittsfilter eine Verzögerung hat. Jedes symmetrische Filter der Länge N hat eine Verzögerung von (N-1) 2 Abtastungen. Wir können diese Verzögerung manuell berücksichtigen. Extrahieren von Durchschnittsdifferenzen Alternativ können wir auch das gleitende Mittelfilter verwenden, um eine bessere Schätzung zu erhalten, wie die Tageszeit die Gesamttemperatur beeinflusst. Dazu werden zuerst die geglätteten Daten von den stündlichen Temperaturmessungen subtrahiert. Dann segmentieren Sie die differenzierten Daten in Tage und nehmen Sie den Durchschnitt über alle 31 Tage im Monat. Extrahieren von Peak Envelope Manchmal möchten wir auch eine glatt variierende Schätzung haben, wie sich die Höhen und Tiefen unseres Temperatursignals täglich ändern. Um dies zu erreichen, können wir die Hüllkurvenfunktion verwenden, um extreme Höhen und Tiefen zu verbinden, die über eine Untermenge der 24-Stundenperiode erkannt werden. In diesem Beispiel stellen wir sicher, dass es mindestens 16 Stunden zwischen jedem extrem hohen und extrem niedrigen Niveau gibt. Wir können auch ein Gefühl dafür, wie die Höhen und Tiefen sind Trends, indem sie den Durchschnitt zwischen den beiden Extremen. Weighted Moving Average Filter Andere Arten von Moving Average Filtern gewichten nicht jede Probe gleichermaßen. Ein weiteres gemeinsames Filter folgt der Binomialexpansion von (12,12) n Dieser Filtertyp approximiert eine Normalkurve für große Werte von n. Es ist nützlich zum Herausfiltern von Hochfrequenzrauschen für kleine n. Um die Koeffizienten für das Binomialfilter zu finden, falten Sie 12 12 mit sich selbst und konvergieren dann iterativ den Ausgang mit 12 12 eine vorgeschriebene Anzahl von Malen. Verwenden Sie in diesem Beispiel fünf Gesamt-Iterationen. Ein anderer Filter, der dem Gaußschen Expansionsfilter ähnlich ist, ist der exponentiell gleitende Durchschnittsfilter. Diese Art des gewichteten gleitenden Durchschnittsfilters ist einfach zu konstruieren und erfordert keine große Fenstergröße. Sie passen einen exponentiell gewichteten gleitenden Durchschnittsfilter durch einen Alpha-Parameter zwischen null und eins an. Ein höherer Wert von Alpha wird weniger Glättung haben. Untersuche die Messwerte für einen Tag. Wähle dein Land


No comments:

Post a Comment