Erstellt am Mittwoch, den 08. Oktober 2008 um 20:04 Uhr Zuletzt aktualisiert am Donnerstag, den 14. März 2013 um 01:29 Uhr Geschrieben von: Batuhan Osmanoglu Zugriffe: 40900 Moving Average In Matlab Oft finde ich mich in der Notwendigkeit der Mittelung der Daten, die ich habe, um das Rauschen ein wenig zu reduzieren Bit. 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. 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 (1616), da wir nicht den allgemeinen Pegel (Amplitude) des Signals ändern wollen. Zur Anwendung des Filters können wir einfach sagen, die folgenden 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 war 4 Pixel breit in Reichweite und 16 Pixel breit in Azimuth. Ich versuche, ein Matlab-Zuweisungsprojekt mit der folgenden Frage abzuschließen: Schreiben Sie eine Funktion namens movingaverage, die einen Skalar namens x als Eingabeargument und gibt einen Skalar. 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 anbiete, ist die folgende: Nach dem Auto Grader funktioniert meine Funktion richtig, wenn Werte 1-50 nacheinander durchlaufen, aber scheitert, wenn Werte einer verrauschten Sinuswelle nacheinander durchlaufen (die ich informiert worden sein, 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 im Voraus
No comments:
Post a Comment