Files
matlab/common/optimization/lms/lms2.m
T
2022-06-30 13:32:40 +02:00

68 lines
1.6 KiB
Matlab
Executable File

%===================================================================
%-------------------------------------------------------------------
%
% Adaptive Filter
%
% Simulationen
%
% [E,W,w,DD]=lms(mu, N, X, D, w_start)
%
% LMS-Algorithmus
%
% E = Fehlersignal E[.]
% W = Filterkoeffizienten im zeitlichen Verlauf
% w = Filterkoeffizienten am Ende der Adaption
% DD = Filterausgang, Schaetzung von D
% mu = Schrittweite
% N = Anz. Filterkoeffizienten = Filterordnung+1
% X = Filtereingang X[.]
% D = erwuenschtes Signal D[.]
% w_start = Startwerte Filterkoeffizienten
%
%-------------------------------------------------------------------
%
% author: Peter Wellig, Martin Haenggi, Markus Hofbauer
% ISI, ETH Zuerich (Switzerland)
%
% created: 7/2000
%
%
%-------------------------------------------------------------------
%
% File : lms.m
%
% Startfile: simX.m
%
%-------------------------------------------------------------------
%===================================================================
function [E,W,w,DD]=lms2(mu, N, X, D, w_start)
% Initialisierungen
adaptlen=length(X);
w = w_start;
W=zeros(N,adaptlen);
DD=zeros(adaptlen,1);
E=zeros(adaptlen,1);
% Loop
flops(0);
for i=N:adaptlen
W(:,i) = w;
x = X(i:-1:i-N+1); % Eingangsvektor (x[k],x[k-1],..,x[k-N+1])
y = x'*w; % Filterausgang
e = D(i)-y; % Fehler
w = w+mu*e*x; % Aufdatierung der Filterkoeffizienten
E(i) = e;
DD(i) = y;
end;
flops