Ich versuche, ein Matlabzuweisungsprojekt mit der folgenden Frage abzuschließen: Schreiben Sie eine Funktion namens movingaverage, die einen Skalar mit dem Namen x als Eingabeargument und einen Skalar zurückgibt. Die Funktion verwendet einen Puffer, um vorherige Eingaben zu speichern, und der Puffer kann maximal 25 Eingänge aufnehmen. Insbesondere muss die Funktion die letzten 25 Eingaben in einem Vektor (dem Puffer) speichern. Jedes Mal, wenn die Funktion aufgerufen wird, kopiert es das Eingabeargument in ein Element des Puffers. Sind bereits 25 Eingaben im Puffer gespeichert, verwirft es das älteste Element und speichert das aktuelle im Puffer. Nachdem sie die Eingabe im Puffer gespeichert hat, gibt sie den Mittelwert aller Elemente im Puffer zurück. Die Lösung, die ich zur Verfügung stellen ist folgende: Nach der Auto grader meine Funktion korrekt durchführt, wenn Werte 1-50 nacheinander sind vorbei, aber nicht, wenn Werte eines verrauschten Sinuswelle vorbei nacheinander (was ich informiert worden, dass aufgrund einiger sein könnte Art eines Rundungsfehlers). Ich wäre Ihnen dankbar, wenn einige von Ihnen könnten mir einige Hinweise über die möglichen Fehler Schritte in meinem Code (siehe oben). Vielen Dank, dass Sie in advanceCreated am Mittwoch, den 8. Oktober 2008 20.04 Zuletzt aktualisiert am Donnerstag, 14. März 2013 01.29 Geschrieben von Batuhan Osmanoglu Zugriffe: 41065 Moving Average In Matlab Oft finde ich mich in der Notwendigkeit, die Daten im Durchschnitt ich das reduzieren müssen Geräusch ein wenig. Ich schrieb paar Funktionen, um genau das tun, was ich will, aber Matlabs in Filter-Funktion gebaut funktioniert auch ziemlich gut. Hier schreibe ich über 1D und 2D Mittelung von Daten. 1D-Filter kann mit der Filterfunktion realisiert werden. Die Filterfunktion erfordert mindestens drei Eingangsparameter: den Zählerkoeffizienten für den Filter (b), den Nennerkoeffizienten für den Filter (a) und natürlich die Daten (X). Ein laufender Mittelwertfilter kann einfach definiert werden: Für 2D-Daten können wir die Funktion Matlabs filter2 verwenden. Für weitere Informationen, wie der Filter funktioniert, können Sie eingeben: Hier ist eine schnelle und schmutzige Implementierung eines 16 von 16 gleitenden durchschnittlichen Filters. Zunächst 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 (1616), da wir nicht den allgemeinen Pegel (Amplitude) des Signals ändern wollen. Um den Filter anzuwenden, können wir einfach Folgendes sagen: Unten sind die Ergebnisse für die Phase eines SAR-Interferogramms. In diesem Fall ist der Bereich in der Y-Achse und der Azimut auf der X-Achse abgebildet. Der Filter wurde 4 Pixel breit im Bereich und 16 Pixel breit in Azimuth.29 September 2013 Gleitender Durchschnitt durch Faltung Was Durchschnitt bewegt und was ist es gut Wie wird Mittelung durch Verwendung Faltung gleitenden Durchschnitten durchgeführt Bewegen eine einfache Operation in der Regel verwendet wird, um Unterdrücken Rauschen eines Signals: Wir setzen den Wert jedes Punktes auf den Mittelwert der Werte in seiner Nachbarschaft. Nach einer Formel: Hier ist x die Eingabe und y das Ausgangssignal, während die Größe des Fensters w ist, die ungerade sein soll. Die obige Formel beschreibt eine symmetrische Operation: Die Proben werden von beiden Seiten des aktuellen Punktes genommen. Unten ist ein Beispiel aus dem wirklichen Leben. Der Punkt, auf dem das Fenster gelegt wird, ist tatsächlich rot. Werte außerhalb x sind Nullen: Um zu spielen und sehen die Auswirkungen der gleitenden Durchschnitt, werfen Sie einen Blick auf diese interaktive Demonstration. Wie man es durch Faltung erkennt Wie Sie vielleicht erkannt haben, ist die Berechnung des einfachen gleitenden Mittels ähnlich der Faltung: In beiden Fällen wird ein Fenster entlang des Signals geschoben und die Elemente im Fenster zusammengefasst. Also, geben Sie ihm einen Versuch, die gleiche Sache zu tun, indem Sie Faltung. Verwenden Sie die folgenden Parameter: Die gewünschte Ausgabe ist: Als erster Ansatz versuchen wir, was wir durch Faltung des x-Signals durch den folgenden k-Kernel erreichen: Der Ausgang ist genau dreimal größer als erwartet. Es ist auch ersichtlich, dass die Ausgabewerte die Zusammenfassung der drei Elemente im Fenster sind. Es ist, weil während der Faltung das Fenster entlang geschoben wird, werden alle Elemente in ihm mit einem multipliziert und dann zusammengefasst: yk 1 cdot x 1 cdot x 1 cdot x Um die gewünschten Werte von y zu erhalten. Wird die Ausgabe durch 3 geteilt: Durch eine Formel mit der Teilung: Aber wäre es nicht optimal, die Teilung während der Konvolution zu machen Hier kommt die Idee, indem wir die Gleichung umordnen: So werden wir den folgenden k Kernel verwenden: Auf diese Weise werden wir Erhalten Sie die gewünschte Ausgabe: Im Allgemeinen: wenn wir gleitenden Durchschnitt durch Faltung mit einer Fenstergröße von w machen wollen. Werden wir den folgenden k-Kernel verwenden: Eine einfache Funktion, die den gleitenden Durchschnitt ausführt, ist: Eine Beispielnutzung ist:
No comments:
Post a Comment