|
|
Frequency Domain LMS-Algorithmus |
|
student_007 |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 26.07.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.07.2010, 17:04
Titel: Frequency Domain LMS-Algorithmus
|
|
Hallo Zusammen,
ich muss ein Matlab-Code erstellen für ein Frequency Domain LMS-Algorithmus. Das ist ein adaptive Filter, nur im Frequenzbereich implementiert.
Ich habe alle Schritte vor mir, nur mit dem Syntax komme ich nicht klar Ich bitte um Hilfe!! Es ist dringend!
Danke!
|
|
|
|
|
vega1013 |
Forum-Century
|
|
Beiträge: 162
|
|
|
|
Anmeldedatum: 26.02.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.07.2010, 14:42
Titel:
|
|
Hallo,
vielleicht solltest du dann dein Problem etwas konkretisieren oder sagen was du möchtest, damit dir geholfen werden kann.
Ich habe mich vor einiger Zeit auch mit dem LMS-Algorithmus vor dem Hintergrund der Systemidentifikation beschäftigt, vielleicht kann ich dir weiterhelfen...
Gruß Vega
|
|
|
student_007 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 26.07.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.07.2010, 15:26
Titel:
|
|
|
|
|
Hallo Vega,
danke erstmal für deine schnelle Antwort.
So ich möchte ein Block LMS Algorithmus implementieren, dh:
- die Eingangsfolge x[n] wird in Blöcke der Länge C eingeteilt, wobei C die DFT-Länge ist. Um von einen Block zum anderen zu kommen, machen wir eine Verschiebung um L Werte.
-das Verfahren (LMS) wird dann für jeden Block im Frequenzbereich wiederholt. Sinn der Sache, ist es dass im Frequenzbereich eine Faltung einer einfachen elementweise Multiplikation entspricht!! (Rechenaufwand wird weniger )
So wird gemacht:
1.Filterung mit dem Overlap-Save-Verfahren im Frequenzbereich:
X[k]=FFT( x[k])
Y[k]=W[k] .* X[k]
y[k]=IFFT(y[k])
Fehlervektor: e[k]=d[k]-y[k]
E[k]=FFT(e[k])
2.Adaption des Filters im Frequenzbereich
-Leistungschätzung und Schrittweite
-Aufdatierung des Koeffizientenvektors
wobei
k=Blockindex, dh
x[1] ist en Vektor, der die ersten C Werte enthält
x[2] ist en Vektor, der um L Werte im Vergleich zu x[1] verschoben wurde und enthält ebenso C Werte
so allgemein: x[k]=[x[kL+L-C],........,x[kL+L-1]]
w[k] ist dann der für diesen Block entsprechende Gewichtsvektor. Er hat die Länge N, deswegen wird er um C-N Nullen auf die Länge C ausgedehnt: w[k]=[w1,w2,...,wN,0,0,....0]
Die Blockweise Verarbeitung bringt es mit sich, dass auch der Filterausgang jeweils in Blöcken der Länge L vorliegt.
Ich kann weiter machen um Einzelheiten zu klären
Ich hoffe das ist erstmal ein Anfang um mich weiter zu helfen.
Ich kann auch gerne Fragen zum Algorithmus beantworten.
|
|
|
vega1013 |
Forum-Century
|
|
Beiträge: 162
|
|
|
|
Anmeldedatum: 26.02.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.07.2010, 16:23
Titel:
|
|
Hallo,
was hast du denn bis jetzt geschrieben? Du solltest den Code den du bis jetzt hast schon mal posten, damit man darüber diskutieren kann... Ich denke nicht das jemand hier für Dich programmieren wird...
Tipps zum Problem:
Die DFT kann mit dem Befehl
berechnet werden. Für Infos gib einfach mal
ein und schau dir das Beispiel an. Ich glaube hier im Forum hat jemand auch mal eine Art Tutorial zur FFT geschrieben.
Deine "x"-Matrix kannst du mit einer for Schleife erstellen. Dies sollte anhand eines Minimalbeispiels keine größeren Probleme darstellen. Beispiele:
Jetzt solltest du mit den Code-Zeilen kommen...
Gruß
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|