[FFT Grundlagen] Phasenerkennung eines digitalisierten Signals

OP #1175583
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.