Adaptive Filterung: Optimale Filterlänge und Verzögerung

7

Ich versuche, mithilfe des RLS-Algorithmus die optimale Filterlänge für eine adaptive Filterung zu finden.

Ich benutze dieses Design:

Das "Fehlersignal" ist also das Signal ohne Rauschen (und das ist das Signal, das ich will).

Wenn ich habe e(n)=d(n)y(n) aber d(n) ist mein gewünschtes Signal, das brauche ich e(n)0 Ich finde die optimale Filterlänge (und die Verzögerung) anhand des MSE-Kriteriums, aber jetzt habe ich das gewünschte Signal als Fehler, sodass ich nicht weiß, wie ich die optimale Filterlänge finden kann, da ich keine Ahnung habe, was MSE muss ich am Ausgang bekommen!

Kann mir jemand sagen, was ich tun soll?

Vielen Dank!

Unbenannt
quelle
3
Im Allgemeinen scheint dies eine gute Frage zu sein, aber Ihr Diagramm ist für mich verwirrend. Zum Beispiel werden Sie die Schmalbandstörung niemals mit dem kombinierten Signal für entfernend(n)... War das beabsichtigt? Außerdem kennen Sie die Übertragungsfunktion Ihres SystemsG(z)=zΔWarum brauchen Sie einen adaptiven Filter?
Hopfen
Das adaptive Filter filtert das Signal, das nicht mit dem Eingang korreliert ist. Wenn Sie eine Verzögerung hinzufügen, ist das verzögerte Rauschen nicht mit dem ursprünglichen Rauschen korreliert, sondern mit dem verzögertens(n) ist immer noch mit dem Original korreliert s(n)Deshalb wird das Rauschen gefiltert. Ist es nicht? Dieses Design stammt vom MIT.
Unbenannt
2
OK, ich verstehe, aber damit dies die Verzögerung funktioniert Δmuss groß genug sein, damit das gewünschte Signals(n)ist nicht mit dem verzögerten Signal am Eingang des Filters korreliert. In diesem Fall sagt der Filter die Interferenz voraus. Beachten Sie, dass nicht das Rauschen (wie Sie im Kommentar geschrieben haben), sondern das gewünschte Signal nicht mit dem verzögerten Signal korreliert werden muss.
Matt L.
Ja, ich denke du hast recht. Also das Fehlersignale(n) ist e(n)=r(n)? Wie groß muss seinΔ?
Unbenannt
Nein, e(n)s(n) und y(n)r(n). Die VerzögerungΔ muss so gewählt werden, dass die Autokorrelation des gewünschten Signals für Verzögerungen (nahe) Null ist Δ, so dass s(n) wird mit der Eingabe unkorreliert f(n)zum Filter. Also die Wahl vonΔ hängt von den Eigenschaften von ab s(n).
Matt L.

Antworten:

4

Um einen optimalen Wert für die Verzögerung wählen zu können ΔEs ist wichtig zu verstehen, wie das System funktioniert. Der Zweck der Verzögerung besteht darin, das gewünschte Signal zu dekorrelierens(n) und die Signalkomponente s(nΔ)am Eingang des adaptiven Filters. Das bedeutet, dassΔ muss so gewählt werden, dass die Autokorrelation Rss(k) von s(n) ist (nahe) Null für Verzögerungen größer als Δ::

Rss(k)0,|k|>Δ

Wir können uns jedoch nicht entscheiden Δ beliebig groß, da die verzögerte Interferenz am Eingang des Filters mit der dem Signal hinzugefügten Interferenz, dh der Autokorrelation, korreliert werden muss Rrr(k) der Interferenz muss mit einer Verzögerung von noch signifikant sein ΔAndernfalls kann das adaptive Filter die Interferenz nicht vorhersagen. Wenn wir das annehmen könnenr(n) ist schmalbandig im Vergleich zu s(n)ist es immer möglich, einen geeigneten Wert für zu finden Δ.

Mit einem angemessenen Wert für ΔDas adaptive Filter versucht, die Interferenz vorherzusagen, dh es versucht, den Effekt der Verzögerung in dem Frequenzband rückgängig zu machen, in dem die Interferenz signifikante Frequenzkomponenten aufweist. Die Ausgabe des Filters wird sich also annähernr(n):: y(n)r(n). Folglich nähert sich das Fehlersignal dem gewünschten Signal an:e(n)s(n).

Nachdem Sie einen Wert für ausgewählt haben Δ basierend auf der Autokorrelation von s(n)muss die Filterlänge durch Ausprobieren gewählt werden. Ein langer Filter führt zu einer besseren Unterdrückung auf Kosten einer langsameren Konvergenz.

Matt L.
quelle
Hervorragende Antwort wie immer, Matt.
Jason R
Danke Matt, ich habe viele Dinge verstanden! Aber ich habe immer noch einige Probleme. Sagt, dasse(n)s(n), und e(n) ist die, die ich in der Abbildung sehe, die ich auf den Hauptbeitrag gesetzt habe. Ich berechne die Autokorrelation wie folgt:
Rss=n=1Le(n)e(n)
Aber ich habe einige Ergebnisse, die etwas verwirrend sind: mit der Filterlänge M=50 Ich habe:
Δ=2R=0.1950Δ=5R=0.4566Δ=10R=0.1396Δ=11R=0.5913Δ=12R=0.0588Δ=13R=0.1.9348Δ=30R=0.7577
Unbenannt
und wenn ich nehme M=20 ich habe
Δ=2R=0.2310Δ=5R=0.4435Δ=10R=0.9420Δ=30R=0.2.5122
Ich weiß nicht was ich tun soll. Ich habe diese Ergebnisse nicht erwartet: S
Unbenannt
1
@ Dylan: Was hast du erwartet und was versuchst du zu tun?
Matt L.
@MattL.: Ich dachte, dass ich bei gleicher Filterlänge bei der Verzögerung eine kleinere Autokorrelation haben würde Δwar größer. Ich rechnee(n) von diesem Entwurf, den ich im Hauptbeitrag gezeigt habe, und ich habe dieses Signal in MATLAB wie folgt verzögert:
edelayed=zeros(1,length(e));for i=(Δ+1):Ledelayed(i)=e(iΔ);end
und dann, um die Autokorrelation zu berechnen:
autocorr=eedelayed
Unbenannt