WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Frequency Domain LMS-Algorithmus

 

student_007
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 26.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2010, 17:04     Titel: Frequency Domain LMS-Algorithmus
  Antworten mit Zitat      
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 Sad Ich bitte um Hilfe!! Es ist dringend!

Danke!
Private Nachricht senden Benutzer-Profile anzeigen


vega1013
Forum-Century

Forum-Century


Beiträge: 162
Anmeldedatum: 26.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2010, 14:42     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
student_007
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 26.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2010, 15:26     Titel:
  Antworten mit Zitat      
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 Wink )

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 Smile

Ich hoffe das ist erstmal ein Anfang um mich weiter zu helfen.

Ich kann auch gerne Fragen zum Algorithmus beantworten.
Private Nachricht senden Benutzer-Profile anzeigen
 
vega1013
Forum-Century

Forum-Century


Beiträge: 162
Anmeldedatum: 26.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2010, 16:23     Titel:
  Antworten mit Zitat      
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
Code:
berechnet werden. Für Infos gib einfach mal
Code:
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:
Code:

Jetzt solltest du mit den Code-Zeilen kommen...

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.