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

Up- und Downsampling bei LMS

 

eumel1
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 08.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.06.2012, 01:50     Titel: Up- und Downsampling bei LMS
  Antworten mit Zitat      
Hi,
anbei das Blockschaltbild.
Ich muss während mein LMS läuft ein Up and Downsamplung machen. Wie das im allgemein funktioniert weiss ich. Ich fülle beim Upsampling nicht mit Nullen auf sondern mit dem zurückliegenden Wert.
Die Abtastrate soll von 40k auf 20 reduziert werden.
Variablen n und k ( z.b. x(n)) beziehen jeweils auf die verwendete abtastrate. n auf 40k und k auf 20 k.

Code:

d2 = fdesign.lowpass('N,Fc',10,10000,40000);
Hd = design(d2);

w_para=zeros(1,parameter);
eingang=zeros(parameter,1);
y_a=zeros(1,length(nSamp));
e=zeros(1,length(nSamp));

%W(z) soll hiermit berechnet werden
v_parallel=filter(wtest,1,x_ref);

mu=0.005;
y_a=0;
%Signal schonmal vorbereiten für downsampling
x_ref_tp=filter(Hd,x_ref);
% Die for schleife des lms soll ja nur mit der halben abtastfrequenz laufen, meine läuft trotdem über die gesamte, dafür läuft der lms ja nur mit jedem zweiten wert, daher mod(i,2)

for i=1:length(x_ref);

    if(mod(i,2)==0)
    yup(i)=y_a((i-1));    
    y_a=filter(Hd,yup);
    e(i)=y_a(i)+d(i)+v_parallel(i);
   
    else
%         y_down(i,1)=filter(Hd,x_ref(i));
        eingang=[x_ref_tp(i,1);eingang(1:parameter-1)];
    y_a(i)=w_para*eingang;
    e(i)=y_a(i)+d(i)+v_parallel(i);
     e_down=filter(Hd,e);
    w_para=w_para-(mu*e_down(i)*eingang)';
   
 
    end


fxlms sollte korrekt sein und die Implementierung wie Up and Downsampling im Allgemeinen funktioniert ist mir auch bewusst.
Trotzdem bekomm ich die Implementierung nicht so wirklich hin. Up an Downsampling muss ich auch per Hand programmieren weil ich den Code irgendwann auch noch in C implementiere und somit keine funktionen wie upsample und downsample nutzen kann.

Allgemein sieht der LMS ja auch so aus, die Sachen die ich machen möchte sieht kommentiert
Code:

w_para=zeros(1,parameter);
eingang=zeros(parameter,1);
y_a=zeros(1,length(nSamp));
e=zeros(1,length(nSamp));

v_parallel=filter(wtest,1,x_ref);


mu=0.005;
for i=1:length(x_ref);      
 eingang=[x_ref_tp(i,1);eingang(1:parameter-1)];
    y_a(i)=w_para*eingang;
    % Hier muss das Upsampling erfolgen weil die addition mit Upgesampelten Signal y addiert werden soll
    e(i)=y_a(i)+d(i)+v_parallel(i);
% Hier muss wieder downgesampelt werden
    w_para=w_para-(mu*e_down(i)*eingang)';
end


Über jede Hilfe bin ich dankbar! Vielleicht ist es ungeschickt die for schleife des lms über die ganze länge laufen zu lassen und nur mit if jeden zweiten wert zu nehmen.

Untitled-2.pdf
 Beschreibung:
Blockschaltbild

Download
 Dateiname:  Untitled-2.pdf
 Dateigröße:  1.31 MB
 Heruntergeladen:  836 mal
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.