Forum: Digitale Signalverarbeitung / DSP / Machine Learning [FFT Grundlagen] Phasenerkennung eines digitalisierten Signals


von Sebastian B. (mircobolle)


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

von Gaston (Gast)


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.

von ahem (Gast)


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.

von mki (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.