Download movAv m siehe auch movAv2 - eine aktualisierte Version, die Gewichtung erlaubt. Description Matlab enthält Funktionen namens movavg und tsmovavg Zeitreihe gleitender Durchschnitt in der Financial Toolbox, movAv ist entworfen, um die grundlegende Funktionalität dieser zu replizieren Der Code hier bietet ein schönes Beispiel für die Verwaltung Indizes innerhalb von Schleifen, die verwirrend sein können, um mit I ve bewusst den Code kurz und einfach zu halten, um diesen Prozess clear. movAv führt einen einfachen gleitenden Durchschnitt, die verwendet werden können, um laute Daten in einigen Situationen wiederherzustellen, funktioniert es, indem sie den Mittelwert Des Eingabes y über ein Gleitzeitfenster, dessen Größe durch n spezifiziert ist. Je größer n ist, desto größer ist die Glättungsmenge der Effekt von n ist relativ zur Länge des Eingangsvektors y und wirksam gut, die Art der Erzeugung Ein Tiefpass-Frequenz-Filter - siehe die Beispiele und Überlegungen Abschnitt. Weil die Menge der Glättung von jedem Wert von n ist relativ zu der Länge des Eingangs-Vektor, es ist immer wert testen verschiedene Werte, um zu sehen, was s angemessen Denken Sie auch, dass n Punkte Sind in jedem Durchschnitt verloren, wenn n 100 ist, die ersten 99 Punkte des Eingangsvektors don t enthalten genügend Daten für einen 100pt Durchschnitt. Dies kann durch Stapeln von Mitteln etwas vermieden werden, zum Beispiel der Code und das Diagramm unten vergleichen eine Anzahl unterschiedlicher Länge Fenster-Mittelwerte Beachten Sie, wie glatt 10 10pt mit einem einzigen 20pt-Durchschnitt verglichen wird. In beiden Fällen sind 20 Datenpunkte insgesamt verloren. Erstellen Sie xaxis x 1 0 01 5 erzeugen Rauschen Rauschen 4 Rauschen repmat randn 1, ceil numel x noiseReps, noiseReps, 1 Rauschen Reshape Rauschen, 1, Lärm Lärm Raps erzeugen ydata Rauschen y exp x 10 Rauschen 1 Länge x Perfrom Mittelwerte y2 movAv y, 10 10 pt y3 movAv y2, 10 10 10 pt y4 movAv y, 20 20 pt y5 movAv y, 40 40 pt y6 movAv y, 100 100 pt Plot Abbildung Plot x, y, y2, y3, y4, y5, y6 Legende Raw Daten, 10pt gleitender Durchschnitt, 10 10pt, 20pt, 40pt, 100pt xlabel x ylabel y title Vergleich der bewegten Durchschnitte. movAv m Code Durchlauffunktion Ausgang movAv y, n Die erste Zeile definiert die Funktion s Name, Ein - und Ausgänge Die Eingabe X sollte ein Vektor von Daten sein, um den Durchschnitt einzutragen, n sollte die Anzahl der Punkte sein, um den Durchschnitt über die Ausgabe auszuführen, wird die gemittelten Daten enthalten, die von der Funktion zurückgegeben werden. Vorausgabe der Ausgabeausgabe NaN 1, numel y Find mid point of n midPoint round N 2 Die Hauptarbeit der Funktion erfolgt in der for-Schleife, aber vor dem Start werden zwei Dinge vorbereitet. Zuerst wird die Ausgabe als NaNs vorab zugewiesen, dies bediente zwei Zwecke Zuerst ist die Vorveröffentlichung in der Regel gute Praxis, da sie das Gedächtnis-Jonglieren reduziert, das Matlab hat Zu tun, zweitens macht es sehr einfach, die gemittelten Daten in eine Ausgabe zu bringen, die die gleiche Größe wie der Eingangsvektor hat. Dies bedeutet, dass die gleiche Xaxis später für beide verwendet werden kann, was für das Plotten bequem ist, alternativ können die NaNs später entfernt werden In einer Zeile des Codeausgangsausgangs. Der variable midPoint wird verwendet, um die Daten im Ausgangsvektor auszurichten. Wenn n 10, 10 Punkte verloren gehen, weil für die ersten 9 Punkte des Eingangsvektors gibt es nicht genügend Daten zu nehmen Ein 10-Punkt-Mittelwert Da der Ausgang kürzer als der Eingang ist, muss er ordnungsgemäß ausgerichtet werden. Der MidPoint wird so verwendet, dass ein gleicher Datenbetrag am Anfang und am Ende verloren geht und der Eingang mit dem Ausgang des NaN übereinstimmt Puffer, die bei der Vorveröffentlichung der Ausgabe erzeugt werden. für eine 1-lage y - n Find-Index-Bereich, um den Durchschnitt über den Durchschnitt zu nehmen Berechnen Sie die mittlere Ausgabe ein midPoint-Mittelwert yab-Ende In der for-Schleife selbst wird ein Mittelwert über jedes aufeinanderfolgende Segment des Eingangs übernommen. Die Schleife läuft Für a, die als 1 bis zur Länge des Eingangs y definiert ist, abzüglich der Daten, die verloren gehen werden n Wenn die Eingabe 100 Punkte lang ist und n 10 ist, läuft die Schleife von einem 1 bis 90. Dies bedeutet, dass a liefert Der erste Index des zu gemittelten Segments Der zweite Index b ist einfach ein n-1 also bei der ersten Iteration ein 1 n 10 so b 11-1 10 Der erste Durchschnitt wird über yab oder x 1 10 übernommen. Der Durchschnitt davon Segment, das ein einzelner Wert ist, wird in der Ausgabe bei Index a midPoint oder 1 5 6 gespeichert. Bei der zweiten Iteration a 2 b 2 10-1 11 wird also der Mittelwert über x 2 11 übernommen und im Ausgang 7 gespeichert Letzte Iteration der Schleife für eine Eingabe der Länge 100, a 91 b 90 10-1 100, so dass der Mittelwert über x 91 100 übernommen und im Ausgang 95 gespeichert wird. Damit bleibt die Ausgabe mit insgesamt n 10 NaN-Werten bei Index 1 5 und 96 100.Beispiele und Überlegungen Bewegliche Mittelwerte sind in einigen Situationen nützlich, aber sie sind nicht immer die beste Wahl Hier sind zwei Beispiele, wo sie nicht unbedingt optimal sind. Mikrofonkalibrierung Dieser Satz von Daten repräsentiert die Niveaus jeder Frequenz, die von einem Lautsprecher und erzeugt wird Aufgezeichnet durch ein Mikrofon mit einer bekannten linearen Antwort Der Ausgang des Lautsprechers variiert mit der Frequenz, aber wir können diese Variation mit den Kalibrierdaten korrigieren - die Ausgabe kann in der Höhe angepasst werden, um die Schwankungen der Kalibrierung zu berücksichtigen Daten sind verrauscht - das bedeutet, dass eine kleine Frequenzänderung eine große, unberechenbare Änderung der Ebene zu berücksichtigen ist, ist dies realistisch oder ist dies ein Produkt der Aufzeichnungsumgebung Es ist in diesem Fall sinnvoll, einen gleitenden Durchschnitt anzuwenden Glättet die Pegel-Frequenz-Kurve, um eine Eichkurve zu liefern, die etwas weniger unregelmäßig ist. Aber warum ist das nicht optimal in diesem Beispiel. Mehrere Daten wären besser - Mehrere Kalibrierungen laufen gemittelt zusammen würden das Rauschen im System zerstören, solange es zufällig ist Und bieten eine Kurve mit weniger subtilen Detail verloren Der gleitende Durchschnitt kann nur annähernd dies, und kann einige höhere Frequenz Dips und Peaks aus der Kurve, die wirklich existieren zu entfernen. Sine Wellen Mit einem gleitenden Durchschnitt auf Sinus Wellen hebt zwei Punkte. Die allgemeine Frage Der Wahl einer vernünftigen Anzahl von Punkten, um den Durchschnitt über. It s einfach, aber es gibt effektivere Methoden der Signalanalyse als Mittelung oszillierende Signale im Zeitbereich. In diesem Diagramm ist die ursprüngliche Sinuswelle in blau aufgezeichnet Lärm wird hinzugefügt Und gezeichnet als die orange Kurve Ein gleitender Durchschnitt wird bei verschiedenen Punkten von Punkten durchgeführt, um zu sehen, ob die ursprüngliche Welle wiederhergestellt werden kann 5 und 10 Punkte liefern vernünftige Ergebnisse, aber don t entfernen das Lärm ganz, wo, wie eine größere Anzahl von Punkten beginnen zu verlieren Amplitude Detail, wie der Durchschnitt erstreckt sich über verschiedene Phasen erinnern die Welle oscilates um Null, und bedeuten -1 1 0.Ander alternativer Ansatz wäre, um ein Tiefpass-Filter zu konstruieren, als auf das Signal im Frequenzbereich angewendet werden kann ich nicht gehen In Detail, wie es über den Rahmen dieses Artikels geht, aber da das Rauschen ist deutlich höher Frequenz als die Wellen Grundfrequenz, wäre es in diesem Fall ziemlich einfach, ein Tiefpass-Filter zu konstruieren, als wird die Hochfrequenz-Rauschen zu entfernen. Created am Mittwoch , 08. Oktober 2008 20 04 Zuletzt aktualisiert am Donnerstag, den 14. März 2013 01 29 Geschrieben von Batuhan Osmanoglu Hits 41547.Moving Average In Matlab. Often Ich finde mich in der Notwendigkeit der Mittelung der Daten, die ich habe, um den Lärm zu reduzieren ein bisschen schrieb ich Paar Funktionen, um genau das zu tun, was ich will, aber Matlab s eingebaute Filterfunktion funktioniert auch ziemlich gut Hier lese ich über 1D und 2D Mittelwertbildung von data.1D Filter kann mit der Filterfunktion realisiert werden Die Filterfunktion benötigt mindestens drei Eingabeparameter Den Zählerkoeffizienten für den Filter b, den Nennerkoeffizienten für den Filter a und die Daten X natürlich. Ein laufender Durchschnittsfilter kann einfach durch. Für 2D Daten definiert werden, können wir die Matlab s filter2 Funktion verwenden Für weitere Informationen darüber, wie die Filter funktioniert, können Sie type. Here ist eine schnelle und schmutzige Implementierung eines 16 von 16 gleitenden durchschnittlichen Filter Zuerst müssen wir den Filter definieren Da alles, was wir wollen, gleicher Beitrag aller Nachbarn ist, können wir einfach die Funktion verwenden Wir teilen alles mit 256 16 16 da wir nicht die allgemeine Pegelamplitude des Signals ändern wollen. Um den Filter anzuwenden, können wir einfach folgendes sagen. Below sind die Ergebnisse für die Phase eines SAR-Interferogramms In diesem Fall ist der Bereich in der Y-Achse und Azimut Auf X-Achse abgebildet Der Filter war 4 Pixel breit im Bereich und 16 Pixel breit in Azimut. Moving Average Filter MA filter. Loading Der gleitende Mittelwertfilter ist ein einfacher Low Pass FIR Finite Impulse Response Filter, der häufig zum Glätten eines Arrays von abgetastetem Datensignal verwendet wird Es dauert M Proben von Eingabe zu einem Zeitpunkt und nehmen Sie den Durchschnitt dieser M-Samples und produziert einen einzelnen Ausgangspunkt Es ist eine sehr einfache LPF Low Pass Filter-Struktur, die praktisch für Wissenschaftler und Ingenieure, um unerwünschte geräuschvolle Komponente aus den beabsichtigten Daten zu filtern Wenn die Filterlänge den Parameter M erhöht, erhöht sich die Glätte des Ausgangssignals, während die scharfen Übergänge in den Daten zunehmend stumpf sind. Dies bedeutet, dass dieser Filter eine ausgezeichnete Zeitbereichsantwort hat, aber eine schlechte Frequenzantwort aufweist. Der MA-Filter führt drei wichtige Funktionen aus .1 Es nimmt M Eingangspunkte, berechnet den Mittelwert dieser M-Punkte und erzeugt einen einzelnen Ausgangspunkt 2 Aufgrund der Berechnungsberechnungen führt der Filter eine bestimmte Verzögerung ein 3 Der Filter fungiert als Tiefpassfilter mit schlechtem Frequenzbereich Antwort und eine gute Zeit Domain Antwort. Matlab Code. Following Matlab Code simuliert die Zeitbereich Antwort eines M-Punkt Moving Average-Filter und zeichnet auch die Frequenzantwort für verschiedene Filter Längen. Time Domain Response. Input zu MA Filter.3-Punkt MA Filterausgang. Input zu Moving Average Filter. Response von 3 Punkt Moving Average Filter.51-Punkt MA Filter Ausgang.101-Punkt MA Filter Ausgang. Response von 51-Punkt Moving Average Filter. Response von 101-Punkt Moving Average Filter. 501-Punkt-MA-Filterausgang. Response von 501 Punkt Bewegen des durchschnittlichen Filters. Im ersten Plot haben wir den Eingang, der in den gleitenden Mittelwertfilter geht Der Eingang ist verrauscht und unser Ziel ist es, das Rauschen zu reduzieren Die nächste Figur ist die Ausgabe Antwort eines 3-Punkt-Moving Average Filters Aus der Figur kann abgeleitet werden, dass der 3-Punkt Moving Average Filter nicht viel bei der Ausfilterung des Rauschens getan hat. Wir erhöhen die Filterhähne auf 51 Punkte und wir sehen, dass das Rauschen in Die Ausgabe hat sich viel reduziert, was in der nächsten Abbildung dargestellt ist. Frequenzreaktion von Moving Average Filtern verschiedener Längen. Wir erhöhen die Hähne weiter auf 101 und 501 und wir können beobachten, dass auch - obwohl das Rauschen fast Null ist, die Übergänge sind Abgestumpft drastisch beobachten die Steigung auf beiden Seiten des Signals und vergleichen sie mit dem idealen Brick Wandübergang in unserem input. Frequency Response. From der Frequenzgang kann man behaupten, dass der Roll-off ist sehr langsam und die Stop-Band Dämpfung Ist nicht gut Angesichts dieser Stopband Dämpfung, klar, die gleitenden durchschnittlichen Filter kann nicht trennen ein Band von Frequenzen von anderen Wie wir wissen, dass eine gute Leistung im Zeitbereich führt zu schlechter Leistung im Frequenzbereich und umgekehrt Kurz gesagt, die Gleitender Durchschnitt ist ein außergewöhnlich guter Glättungsfilter die Aktion im Zeitbereich, aber ein außergewöhnlich schlechter Tiefpassfilter die Aktion im Frequenzbereich. External Links. Recommended Books. Primary Sidebar.
No comments:
Post a Comment