49 lines
1.4 KiB
Matlab
Executable File
49 lines
1.4 KiB
Matlab
Executable File
% LMS-Algorithmus
|
|
% ---------------
|
|
% function [ys,e,wf,fpo] = lms(x,d,N,mu,wi)
|
|
%
|
|
% Parameter:
|
|
% x : Eingangssignal
|
|
% d : erwünschtes Signal (Referenzsignal)
|
|
% N : Filterordnung
|
|
% mu : konstante Schrittweite
|
|
% wi : Startwerte der Filterkoeffizienten im Zeitbereich
|
|
%
|
|
% Rückgabewerte:
|
|
% ys : Schätzung des erwünschten Signals d aus x
|
|
% e : Fehler d - y
|
|
% wf : Filterkoeffizienten am Ende der Adaption im Zeitbereich
|
|
% fpo : Anzahl benötigten der Floating-Point Operationen
|
|
|
|
% -------------------------------------------------------------------------
|
|
% Datum : 20.7.2001
|
|
% Autor : Jens Ahrensfeld
|
|
% Thema : Diplomarbeit
|
|
% Datei : lms.m
|
|
% Benötigte Dateien: keine
|
|
%
|
|
% -------------------------------------------------------------------------
|
|
function [ys,e,wf,fpo] = lms(x,d,N,mu,wi)
|
|
|
|
% -------------------------------------------------------------------------
|
|
% Initialisierung LMS
|
|
% -------------------------------------------------------------------------
|
|
wf = wi;
|
|
y = zeros(length(x),1);
|
|
e = zeros(length(x),1);
|
|
flops(0);
|
|
|
|
% -------------------------------------------------------------------------
|
|
% LMS Adaptation
|
|
% -------------------------------------------------------------------------
|
|
for n = N : length(x)
|
|
xs = x(n:-1:n-N+1);
|
|
ys(n) = xs'*wf;
|
|
e(n) = d(n) - ys(n);
|
|
wf = wf + mu*e(n)*xs;
|
|
end ;
|
|
fpo = flops;
|
|
|
|
% -------------------------------------------------------------------------
|
|
% Ende lms.m
|