Sonntag, 8. August 2010

Umzug

Aus vielfältigen Gründen:
  • Probleme beim Kommentare schreiben
  • Wenig Möglichkeiten Plugins einzubauen
  • Google Analytics schaut wer alles mein Blog liest (Danke an Christian!)
zieht dieses Blog auf eine neue URL http://blog.robertjakob.de/ um. Bitte ändert Eure Feeds ab, denn hier wird es keine Updates mehr geben. Es kann allerdings sein, dass es noch bisschen dauert bis die neue Adresse erreichbar ist, da DNS ja bekanntlich gecachet wird funktioniert und deshalb nicht unmittelbar funktioniert.

Samstag, 7. August 2010

Mathematische Spielereien - Fouriertransformation

Ich habe vor in unregelmäßigen Abständen Beispiele zu verschiedenen  mathematischen Themen zu veröffentlichen. Alle Beispiele werden praxisbezogen sein und auch den vollständigen Quellcode enthalten. Hier das erste Thema!

Jeder Informatikstudent wird im Laufe seines Studiums mit der Fouriertransformation konfrontiert. Bei mir war es in der Mustererkennungsvorlesung das erste mal und in der Vorlesung Algorithmentheorie zum zweiten mal.

Irgendwie war es in manchen Fällen allerdings schwierig die vielen Anwendungsmöglichkeiten der Fouriertransformation zu sehen, deshalb hier ein kleines Beispiel.

Nehmen wir an, wir bekommen ein verrauschtes Signal das in etwa so ausschaut:

Betrachtet man das Signal ist klar, dass das wahrscheinlich mal eine Sinusschwingung war. Mit der Fouriertransformation kann man nun auf wunderbare Weise das Rauschen entfernen.

Dazu wandelt man die Daten erst einmal in den Frequenzraum um, d.h. man führt eine Fouriertransformation auf den Daten aus. Für einen Datenvektor:

erhält man die Fourierkoeffizienzen


nach folgender Formel:
 
Da wir hier einen reellen und keinen komplexen Eingabevektor haben, gilt hier ein Symmetriegesetzt, was bedeutet, dass nur N/2 unterschiedliche Fourierkoeffizienten vorliegen. Die Koeffizienten sind quasi in der Mitte gespiegelt. Transformiert man das oben genannte Bild nun in den Frequenzraum erhält man folgende Fourierkoeffizienten:
Die Grafik ist mit einer logarithmischen y-Skala versehen, da ansonsten die Wertdifferenzen zu groß sind. Außerdem sind hier nur die Beträge dargestellt. Die eigentlischen Koeffizienten befinden sich im Komplexen. Man sieht hier wenn man genau hinschaut die Symmetrie (eine Spiegelung bei 180).

Je größer die Fourierkoeffizienten sind (0-180) desto kleiner sind die Auswirkungen auf die Schwingung. Setzt man deshalb die größeren Fourierkoeffizienten auf 0, so kann man die kleineren Schwingungen entfernen. Im Beispiel wurden nun die Koeffizienten 10-180 (und deren symmetrische Partner) auf 0 gesetzt und eine inverse Fouriertransformation mit folgender Formel durchgeführt:
Man erhält nun folgendes Signal:
Und das Ergebnis hat deutlich weniger Rauschen wie das ursprüngliche.
Das Tool Scilab eignet sich dafür übrigens wunderbar.

Viel Spaß beim selbst ausprobieren.

Greetz
arj