Hallo, die meisten unter euch E-Technikern und NT'lern werden jetzt über meine Frage lachen, aber ich hatte schon seit längerer Zeit nicht mehr mit komplexen Zahlen zu tun und konnte damals auch nur das was in der Klausur abgeprüft wurde, habe aber nicht wirklich verstanden worum es dabei ging ... Folgendes Szenario: Ich habe ein sinusförmiges Signal mit 256 Punkten abgetastet und mit Hilfe einer FFT die Phasenwinkel Phi und Beträge der jeweiligen Ordnungen ausgerechnet. Soweit so gut. Als Ergebnis habe ich dann z.B. für die 1. Ordnung eines abgetasteten Signals den Winkel Phi = -1.597 und den Betrag |z| = 20.1. Die Werte stimmen auch, hab ich überprüft (mit Fremdsoftware), weiter gehts: Erste Frage: Jetzt ist es doch so, dass Phi ein Winkel (in rad) bezogen auf die X-Achse (Realteil) ist und |z| die länge des Vektors und ich dadurch einen Zeiger erhalte der irgendwo zwischen 0 ... 2*PI hinzeigt. Soweit richtig? Zweite Frage: Wenn ich jetzt den "absoluten Winkel in Grad" haben möchte (wobei y-Achse = 0° ist), dann rechne ich doch: (1) Phi_grad = Phi_rad * 180°/PI (2) Winkel_absolut = (360° + 90° - Phi_grad)%360 Korrekt? Dritte Frage: Obige Rechnung stimmt, aber nur wenn Re(z) > 0 und Im(z) > 0 sind, ansonsten stimmt Winkel_absolut um 90° oder 180° nicht. Ich hab das Gefühl hier fehlt noch irgendein sin() oder cos()-Konstrukt? Wer kann mir helfen? Vielen Dank im Vorraus.
Wenn partout die y-Achse der Bezug für den Winkel sein soll, musst Du einfach vom gegebenen, auf die x-Achse ( reelle Achse ) bezogenen Winkel 90° = Pi/2 rad abziehen. Gruss
>wobei y-Achse = 0° ist
Dreh doch die BErechnung um.
normalerweise ist doch arctan phi = im(z)/re(z)
machs einfah so:
arctan phi_y = re(z)/im(z)
hinweis: der quadrant muss durch sgn(re) und sign(im) ermittelt und
dazugerechnet werden.
Moin, also die polar-koordinaten darstellung (Winkel,VectorLänge) ist 'nur' eine andere darstellung eines punktes in der komplexen zahlen-ebene.
wobei:
und
mfg Olaf
So, nach etwas längerer Pause habe ich mich heute wieder dran gesetzt. Im Grunde genommen war ich auf dem richtigen Weg, es wurde jedoch an 2 Stellen ein impliziter Cast auf einen Integer durchgeführt, obwohl ich mit Float's rechne. Dadurch kam es zu Fehlern (fehlende Nachkommastellen). Danke euch trotzdem.
"normalerweise ist doch arctan phi = im(z)/re(z)" Dafür gibt es eine spezielle Funktion atan2(x,y) Die bringt auch dann ein richtiges Ergebnis, wenn einer der beiden Operanden null ist.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.