mikrocontroller.net

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


Autor: Sebastian B. (mircobolle)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gaston (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: mki (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.