Autokorrelation als Rauschunterdrückung



  • http://cc.uni-paderborn.de/arbeitsgebiete/messtech/simulationen/autokor/index.html

    Das habe ich mir gerade durchgelesen. Also, gehen wir davon aus, ich habe 1024 Messwerte gesampelt und diese Messwerte will ich nun entstören, also das Rauschen nahezu entfernen.

    Habe ich das jetzt so richtig verstanden?
    - die Messwerte sind in a(t) zu finden
    - jetzt lasse ich eine Variable s(shift) von 0 bis 1023 hochzählen
    - bilde in der schleife die verschobene Funktion b(t) = a(t + s)
    - c(t) = a(t)*b(t)
    - d(s) = (Flächeninhalt von c) / (Flächeninhalt von a)²

    und d ist dann mein entstörtes Signal?

    mfg olli

    Edit: Achja, b(t) = a(t + s). Werden dann die Funktionswerte von a abgeschnitten, oder wiederholen die sich auf der anderen Seite?



  • Ich weiß nicht wie Du darauf kommst, dass das entstört. Das ist einfach nur die Autokorrelation (Selbstähnlichkeit) des Signals. Da wird überhaupt nichts entstört.



  • http://cc.uni-paderborn.de/arbeitsgebiete/messtech/simulationen/autokor/index.html

    Das ganz oben dargestellte Meßsignal ist bei mäßigem Rauschen (Mitte) noch halbwegs, wenngleich auch mit nicht unerheblichem Meßfehler, im untersten Fall sehr intensiven Rauschens gar nicht mehr erkennbar, und damit auch nicht mehr sinnvoll auswertbar. Um solche verrauschten Signale dennoch einer Auswertung zugänglich zu machen, wird das Autokorrelationsverfahren als "Filter" angewendet. Voraussetzung für eine sinnvolle Anwendung des Autokorrelationsverfahrens als "Rauschfilter" ist eine geringe zeitliche Ausdehung der Impulse des Rauschens ("weißes Rauschen"), weil die Korrelationszeit des Störsignals dann sehr klein im Verhältnis zu der Korrelationszeitdauer des Meßsignals ist (siehe "stochastische Signale und Rauschen"). Theoretisch wird das Rauschen aus einem Meßsignal beseitigt, indem die Autokorrelationsfunktion gebildet wird.

    Daher nehme ich das an.

    Beschäftige mich erst seit gestern mit dem Thema, deswegen habe ich da auch noch keine Ahnung. Dennoch muss mein Programm schnellstmöglich damit ausgestattet sein.

    mfg olli



  • Wenn du ein einfaches Filter haben willst such mal nach "moving average".



  • Mich würde jetzt schon verstören, daß die verwendeten Definitionen von zeitkontinuierlichen Funktionen ausgehen, Du aber nur zeitdiskret gemessen hat. Ob das so einfach geht, was Du vorhast?



  • ----: Genial, Moving Average(alias Gleitender Durchschnitt) filtert sehr effizient. Ich muss ihn zwar 20 mal übers Mikrofonsignal laufen lassen aber das verlangsamt das Programm nur unerheblich.

    scrub: Hmm, das höre ich jetzt zum ersten mal, aber das hat sich ja jetzt eh mit Moving Average erledigt.

    Die Autokorrelation benutze ich jetzt übrigens, um die Grundfrequenz der Stimme zu erkennen. Das funktioniert doch recht genial:

    >>Screenshot<<

    Zu sehen ist oben das entstörte Signal(die Entstörung kann man bei tiefen Tönen besser erkennen), dann die FFT Analyse. Darunter die Gewichte der Autokorrelation mit rot als größtem Gewicht(=Grundfrequenz) unterteilt in 4 Oktaven. Und ganz unten die gesungene Melodie, die dann Später im Karaokeprogramm mit einer Art Midi Datei verglichen wird.

    mfg olli


Anmelden zum Antworten