mikrocontroller.net

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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Jürgen H. (t-5)
Datum:
Angehängte Dateien:

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

Autor: Dergute W. (derguteweka)
Datum:

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

Autor: Jürgen H. (t-5)
Datum:

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

Autor: Dergute W. (derguteweka)
Datum:

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

Autor: Jürgen H. (t-5)
Datum:

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

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.

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