Forum: Digitale Signalverarbeitung / DSP / Machine Learning Summierung von Phasenverläufen in Diagrammen


von Jürgen H. (t-5)


Angehängte Dateien:

Lesenswert?

Servus!

Ich bin dabei für mein Programm "Pulseaudio Crossover Rack" 
Unterstützung für Frequenzgangs-Dateien (.FRD) zu implementieren.

Ziel ist es, einzelne Frequenzgangsverläufe von Lautsprechern zu messen, 
Filter darauf anzuwenden und die Verläufe danach aufzusummieren um einen 
Gesamtverlauf zu bekommen bzw. diesen dann zu optimieren. Ein Beispiel 
mit einem Tieftöner und einem Mitteltöner hab ich als Bilder mal 
angehängt, damit wird's vielleicht etwas klarer.

Nun, das Aufsummieren der Magnituden ist ja trivial, was ich noch 
implementieren muss ist der Phasenverlauf der Summenkurve und da setzt's 
bei mir schon wieder mal aus mit der Mathematik. Hat jemand einen Tipp 
für mich, wie man das anstellt?

Vielen Dank schon mal im Voraus und VG,
Jürgen

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Ja - aeh; die Betraege und Phasen der Teilsignale halt in Real- und 
Imaginaerkomponenten umwandeln; die dann jeweils addieren und dann 
wieder in Betrag und Phase des Summensignals rueckwandeln. Oder willst 
du was ganz anderes?

Gruss
WK

von Jürgen H. (t-5)


Lesenswert?

Ja äh, das will ich :)

Sorry, ich bin immer noch ein DSP-noob und absolut 100%ig aus der Übung 
was die Mathematik angeht, is schließlich >20y her.

Aber dank solcher stichwortartigen Inputs wie von Dir und etwas googeln 
komm ich dann schon auf die richtigen Lösungen ;)

Danke und VG,
Jürgen

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Axo. Da nimmste deine ganzen zu summierenden Amplituden jeweils mal dem 
cosinus ihres Winkels:

X=A1*cos(phi1)+A2*cos(phi2)+...

und das ganze nochmal mit dem sinus:

Y=A1*sin(phi1)+A2*sin(phi2)+...

Dann ist die Summe der einzelnen Ampliduden:
A=sqrt(A1²+A2²+...)
und der dazugehoerige Winkel
phi=atan2(Y/X) (mit den entsprechenden Vorsichtsmassnahmen, wenn X=0 ;-) 
)

https://en.wikipedia.org/wiki/Atan2

Gruss
WK

von Jürgen H. (t-5)


Lesenswert?

Danke nochmal, in Python gehts tatsächlich noch einfacher. Umwandeln in 
komplexe Zahl:

C = magnitude  * math.exp(1j * phi)

magnitude als Faktor, phi als Winkel in rad

Aufsummieren ist ja tatsächlich trivial auch für komplexe Zahlen.

Das konvertieren zurück geht auch ganz einfach:

magnitude, phi = cmath.polar(C)

VG Jürgen

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.