[FFT Grundlagen] Phasenerkennung eines digitalisierten Signals

OP #1175583
Lesenswert?

Hallo,

ich habe bereits im Mikrocontroller Forum die folgende Frage gepostet.
Ich möchte hier keinen zweiten Thread aufmachen, deshalb verweise ich 
hier einfach mal auf den Thread im Mikrocontroller Forum:

Beitrag "Re: [C/C++] Phasenerkennung eines Signals"

Kurz umrissen geht es um folgendes:

Ich habe ein digitalisierte Signal und nun geht es mir darum wie ich an 
diesem digitalisierten Signalstrom die Phasenänderung erkenne.

Ein zweiter Punkt ist wie ich für die FFT eine Phasenänderung von z.B. 
90° erreichen kann.

Danke an alle, die den Umweg über das Mikrocontroller Forum gehen. :-)

Liebe Grüße
Sebastian
Gast #1182702
Lesenswert?

90 grad? Mit einer Drehmatrix bei der die Cosinusanteile Null werden.
Die Beträge von Real und Imaginärteil tauschen die Plätze und wechseln 
entsprechend der Drehrichtung ihr Vorzeichen.
Geht vieleicht auch mit beliebigen Winkel glaub ich. Einfach Cosinus und 
Sinus ausrechnen und dann eine Matrixmultiplikation über der komplexen 
Vektor deines Spektrums machen. Oder ist es komplizierter? Ich würde es 
auch gern wissen.

Die Erkennung der Phasenlage mit oder ohne Referenzsignal? Ohne Referenz 
kann man wohl nur schnelle Phasenänderungen feststellen. In dem ein 
Filter die Phase aus einem vorhergegangenen Zeitfenster voraussagt und 
Abweichungen erkennt. Ansonsten subtrahiert man das Referenzsprektrum 
vom zu anlysierenden Spektrum. Entweder Komplex oder in Betrag und 
Phase.
Gast #1184685
Lesenswert?

Du machst aber hier einen zweiten Thread auf. Was auch sinnvoll ist, den 
das Thema unter C/C++ ist ganz falsch. Hat Nichts mit C/C++ zu tun. Wie 
Gaston schon sagte, ist der Ansatz unguenstig. Eine FFT ist ein Tool, um 
das Spektrum eines Signales zu rechnen. Damit Phasen zu detektieren ist 
unguenstig. Wir sollten zuerst mal die Signalthoerie hervorkramen. Da du 
von Phasenspruengen erzaehlst gehe ich davon aus, das Nutzsignal hat 
eine feste Frequenz, die in etwa bekannt ist. Wenn du nun an 
Phasenspruengen interessiert bist so bietet sich ein PLL an. Den Gaston 
als Zukunfts-esimator bezeichnet. Das Problem ist no, welches ist die 
Referenzphase ? Das muss extern im Protokoll festgelegt sein/werden.
Gast #1199933
Lesenswert?

Um eine Phasenänderung zu erzeugen multiplizierst du einfach dein Signal 
mit der complexen e-Funktion exp(-i*2PI/360*90). Das sollte mut jedem 
beliebigen Winkel gehen. Eine Phasenänderung zu erkennen ist schon etwas 
komplizierter, aber ich denke doch mit Hilfe der fft möglich. Das sollte 
in etwa so gehen:
1) Berechne Phase von Signal 1
2) Berechne Phase von Signal 2
3) Bilde die Differenz beider Phasenvektoren
4) Berechne so eine Art Mittelwert aller Vektoreinträge

Ich glaube das geht aber bei kleinen Phasenänderungen. 90 Grad dürften 
da schon ziemlich viel sein - kann aber auch sein das ich das jetzt mit 
etwas anderem verwechsle.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren