Wie werden komplexe Antworten (und Begründungen) gemittelt?


11

Ich entwickle eine Software, die die Reaktion eines Systems durch Vergleichen der FFT von Eingangs- und Ausgangssignalen berechnet. Die Eingangs- und Ausgangssignale sind in Fenster unterteilt, und für jedes Fenster werden die Signale im Median subtrahiert und mit einer Hann-Funktion multipliziert. Die Instrumentenantwort für dieses Fenster ist dann das Verhältnis der FFTs der verarbeiteten Daten.

Ich glaube, dass das oben genannte Standardverfahren ist, obwohl ich es möglicherweise schlecht beschreibe. Mein Problem besteht darin, wie die Antworten aus den verschiedenen Fenstern kombiniert werden.

Soweit ich sehen kann, besteht der richtige Ansatz darin, die komplexen Werte über alle Fenster hinweg zu mitteln. Die Amplitude und die Phasenantwort sind dann die Amplitude und Phase des durchschnittlichen komplexen Wertes bei jeder Frequenz:

av_response = sum_windows(response) / n
av_amplitude = sqrt(real(av_response)**2 + imag(av_response)**2)
av_phase = atan2(imag(av_response), real(av_response))

mit impliziten Schleifen über Frequenzbereiche.

Aber ich bin gebeten worden , dies zu ändern , zu berechnen Amplitude und Phase in jedem Fenster zuerst und mittleres dann die Amplituden und Phasen in allen Fenstern:

amplitude = sqrt(real(response)**2 + imag(response)**2)
av_amplitude = sum_windows(amplitude) / n
phase = atan2(imag(response), real(response))
av_phase = sum_windows(phase) / n

Ich habe argumentiert, dass dies falsch ist, weil Mittelungswinkel "einfach falsch" sind - der Durchschnitt von 0 und 360 Grad beträgt beispielsweise 180, aber die Leute, mit denen ich arbeite, antworteten mit "OK, wir zeigen nur die Amplitude an".

Meine Fragen sind also:

  • Habe ich Recht, wenn ich denke, dass der zweite Ansatz im Allgemeinen auch für Amplituden falsch ist?
  • Wenn ja, gibt es Ausnahmen, die relevant sein könnten und die erklären könnten, warum die Leute, mit denen ich arbeite, die zweite Methode bevorzugen? Es sieht zum Beispiel so aus, als würden die beiden Ansätze übereinstimmen, wenn das Rauschen klein wird. Vielleicht ist dies eine akzeptierte Näherung für geringes Rauschen?
  • Wenn der zweite Ansatz falsch ist, gibt es überzeugende, maßgebliche Referenzen, anhand derer ich dies zeigen kann?
  • Wenn der zweite Ansatz falsch ist, gibt es gute, leicht verständliche Beispiele, die dies für die Amplitude zeigen (wie der Durchschnitt von 0 und 360 Grad für die Phase)?
  • Wenn ich falsch liege, was wäre ein gutes Buch für mich, um mich besser zu erziehen?

Ich habe versucht zu argumentieren, dass der Durchschnitt von -1 1 1 -1 1 -1 -1 eher Null als 1 sein sollte, aber das war nicht überzeugend. Und obwohl ich denke, dass ich mit der Zeit ein Argument konstruieren könnte, das auf der Schätzung der maximalen Wahrscheinlichkeit bei einem bestimmten Geräuschmodell basiert, ist es nicht die Art von Argumentation, auf die die Leute, mit denen ich arbeite, hören werden. Wenn ich mich also nicht irre, brauche ich entweder ein starkes Argument der Autorität oder eine "offensichtliche" Demonstration.

[Ich habe versucht, weitere Tags hinzuzufügen, kann aber keine relevanten finden und keine neuen als neuen Benutzer definieren - sorry]


Welchen Grund geben sie an, Ihre Methode abzulehnen?
Nibot

Die Antwort sieht flüssiger aus, wenn sie mit der zweiten Methode gezeichnet wird. Ich denke, das liegt daran, dass es für die betrachteten Fälle kein signifikantes Signal gibt (bei höherem f), während der zweite Ansatz ein Signal zwingt, aus dem Rauschen "zu erscheinen". auch verschiedene politische / kommunikative Fragen, wie Sie vielleicht erraten.
Andrew Cooke

1
Haben Sie versucht, einige Testfälle bereitzustellen? Nehmen Sie zufällige Daten und filtern Sie sie durch einige Filter mit bekanntem Frequenzgang. Stellen Sie sicher, dass die Übertragungsfunktionsschätzung zur bekannten Übertragungsfunktion konvergiert.
Nibot

Nein. Ich habe nicht. Das ist ein guter Vorschlag. Vielen Dank. Wenn es gut präsentiert wird, kann ich sehen, dass es überzeugend ist.
Andrew Cooke

Antworten:


13

Die Schätzung der Übertragungsfunktion wird normalerweise geringfügig anders implementiert als die von Ihnen beschriebene Methode.

Ihre Methode berechnet

F[y]F[x]

wobei spitzen Klammern Mittelwert übernommen Datensegmenten repräsentieren, und eine Fensterfunktion für jedes Datensegment angelegt wird , die Fourier - Transformation (vor der Einnahme von F ).F

Eine typischere Implementierung berechnet die spektrale Kreuzdichte von x und y geteilt durch die spektrale Leistungsdichte von x:

F[y]F[x]|F[x]|2=F[y]F[x]F[x]F[x]

Wobei ein punktweises Produkt darstellt und das komplexe Konjugat.

Ich glaube, dies soll den Effekt von Datensegmenten reduzieren, in denen Bins von F[x] übermäßig klein sind.

Inkohärente Schätzung

Ihr Arbeitgeber hat vorgeschlagen, dass Sie die Übertragungsfunktion mit schätzen

|F[y]||F[x]|

Dies wird funktionieren , hat aber zwei große Nachteile:

  1. Sie erhalten keine Phaseninformationen.
  2. xy

Ihre Methode und die von mir beschriebene Methode umgehen diese Probleme durch kohärente Mittelwertbildung .

Verweise

Die allgemeine Idee, überlappende, gemittelte Segmente zur Berechnung der spektralen Leistungsdichten zu verwenden, ist als Welch-Methode bekannt . Ich glaube, dass die Erweiterung auf diese Methode zur Schätzung von Übertragungsfunktionen oft auch als Welch-Methode bezeichnet wird, obwohl ich nicht sicher bin, ob sie in Welchs Artikel erwähnt wird. Das Nachschlagen von Welchs Papier könnte eine wertvolle Ressource sein. Eine nützliche Monographie zu diesem Thema ist Bendats und Piersols Buch Random Data: Analysis and Measurement Procedures .

Validierung

Um Ihre Software zu validieren, empfehle ich, mehrere Testfälle anzuwenden, in denen Sie weißes Gaußsches Rauschen erzeugen und es durch einen digitalen Filter mit einer bekannten Übertragungsfunktion führen. Führen Sie die Ein- und Ausgänge in Ihre Übertragungsfunktionsschätzroutine ein und überprüfen Sie, ob die Schätzung auf den bekannten Wert der Übertragungsfunktion konvergiert.


Ah! Danke. Ich werde dies untersuchen / versuchen.
Andrew Cooke

@nibot Welche genauen FFT-Längen werden hier verwendet?
Spacey

Sie können eine beliebige Länge verwenden. Die Länge bestimmt die Auflösung und implizit (bei einer festgelegten Datenmenge) die Anzahl der Durchschnittswerte. Längeres fft = bessere Auflösung, aber auch größere Fehler aufgrund weniger Durchschnittswerte.
Nibot

ok, ein weiterer Unterschied ist, dass Sie <F (y) F * (x)> / <F (x) F * (x)> haben, während Phonon <F (y)> <F * (x)> / (<hat F (x)> <F * (x)>) afaict: o (
Andrew Cooke

Es macht keinen Sinn, <F (y)> <F * (x)> / (<F (x)> <F * (x)>) zu berechnen, da die <F * (x)> sofort abgebrochen werden. Ich denke, es ist richtig, wie ich es geschrieben habe.
Nibot

12

Willkommen bei der Signalverarbeitung!

Du hast absolut recht. Sie können DFT-Größen und -Phasen, insbesondere Phasen, nicht einfach separat mitteln. Hier ist eine einfache Demonstration:

z=a+bi|z|zz

|z|=a2+b2
z=tan1(ba)

zz1z2

z=z1+z22=a1+b1i+a2+b2i2=(a1+a2)+(b1+b2)i2

In diesem Fall,

|z|=(a1+a2)24+(b1+b2)24=12(a1+a2)2+(b1+b2)2a12+b12+a22+b222

Ebenfalls,

z=tan1(b1a1)+tan1(b2a2)2tan1(2(b1+b2)2(a1+a2))

|z|z

Um das zu tun, was Sie versuchen, schlage ich Folgendes vor. Theoretisch können Sie eine Impulsantwort eines Systems finden, indem Sie die DFT des Ausgangs durch die DFT des Eingangs teilen. Bei Lärm werden Sie jedoch sehr seltsame Ergebnisse erzielen. Ein etwas besserer Weg wäre die Verwendung der Zweikanal-FFT-Impulsantwortschätzung, die wie folgt abläuft (Ableitung hier nicht angegeben, aber online verfügbar).

Gi(f)=Fi1(f)+Fi2(f)++FiN(f)NFik(f)kkichGÖ(f)=F.Ö1(f)+F.Ö2(f)++F.ÖN.(f)N.GH.^(f)H.(f)

H.^(f)=GÖ(f)Gich(f)|Gich(f)|2

bei dem die () steht für komplexe Konjugation (drehen Sie das Zeichen aller Ihrer Imaginärteile um).


2
Vielen Dank; Ich war mir nicht sicher, ob ich dieses oder das Nibot als beste Antwort wählen sollte - ich denke, sie befürworten den gleichen Prozess, also ging ich mit der Buchempfehlung um, aber wenn ich zwei Stimmen hätte, hätte dies auch enthalten ...
andrew cooke

1
@andrewcooke Ja, beide befürworten genau das Gleiche. Ich hoffe, das klärt die Dinge für Sie und Ihre Kollegen auf.
Phonon

it's been a huge help for me (thanks again). on monday i will suggest that i (1) implement the method suggested and (2) do comparisons with known (synthetic) data for all three. then hopefully the best approach will win :o)
andrew cooke

@Phonon What FFT lengths are we using to compute the FFTs here? length_of_signal + max_length_of_channel + 1?
Spacey

@Mohammad It has to be at least twice the length of the delay you're expecting to find. This is due to circular symmetry of the DFT, so you will get both causal and non-causal delay values in your result.
Phonon

3

Dies ist ein Unterschied zwischen kohärenter und inkohärenter Mittelung von FFT-Spektren. Eine kohärente Mittelwertbildung lehnt zufälliges Rauschen in der Analyse eher ab. Inkohärent akzentuiert eher zufällige Rauschgrößen. Welche davon ist für Ihren Ergebnisbericht wichtiger?


Wenn sie unterschiedliche Ergebnisse liefern, möchte ich wohl eine unvoreingenommene Schätzung. ist entweder unvoreingenommen?
Andrew Cooke
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.