- added
git-svn-id: http://moon:8086/svn/matlab/trunk@153 801c6759-fa7c-4059-a304-17956f83a07c
This commit is contained in:
Executable
+55
@@ -0,0 +1,55 @@
|
||||
% RLS-Algorithmus
|
||||
% ---------------
|
||||
% function [dd,e,wf,fpo] = rls(x,d,N,mu,rho,wi)
|
||||
%
|
||||
% Parameter:
|
||||
% x : Eingangssignal
|
||||
% d : erwünschtes Signal (Referenzsignal)
|
||||
% N : Filterordnung
|
||||
% mu : konstante Schrittweite
|
||||
% rho : Vergessensfaktor
|
||||
% wi : Startwerte der Filterkoeffizienten im Zeitbereich
|
||||
%
|
||||
% Rückgabewerte:
|
||||
% dd : Schätzung d' des Referenzsignals d aus x
|
||||
% e : Fehler d - d'
|
||||
% wf : Filterkoeffizienten am Ende der Adaption im Zeitbereich
|
||||
% fpo : Anzahl der benötigten Floating-Point Operationen
|
||||
|
||||
% -------------------------------------------------------------------------
|
||||
% Datum : 27.3.2002
|
||||
% Autor : Jens Ahrensfeld
|
||||
% Thema : Diplomarbeit
|
||||
% Datei : rls.m
|
||||
%
|
||||
% -------------------------------------------------------------------------
|
||||
function [dd,e,wf,fpo] = rls(x,d,N,mu,rho,wi)
|
||||
|
||||
% -------------------------------------------------------------------------
|
||||
% Initialisierung RLS
|
||||
% -------------------------------------------------------------------------
|
||||
wf = wi;
|
||||
dd = zeros(length(x),1);
|
||||
e = zeros(length(x),1);
|
||||
eta = 1000000;
|
||||
R_ = eta * eye(N); % inverse Autokorrelationsmatrix R
|
||||
flops(0);
|
||||
|
||||
% -------------------------------------------------------------------------
|
||||
% RLS Adaptation
|
||||
% -------------------------------------------------------------------------
|
||||
for n = N : length(x)
|
||||
xs = x(n:-1:n-N+1); % Eingangsvektor
|
||||
dd(n) = xs' * wf; % Filterung
|
||||
e(n) = d(n) - dd(n); % a priori-Fehler
|
||||
z = R_ * xs; % gefilterter Datenvektor z
|
||||
vn = 1/(rho + xs'*z); % Normierungskonstante
|
||||
zn = vn*z; % Normierung
|
||||
wf = wf + mu*e(n)*zn; % Aktualisierung der Filterkoeffizienten
|
||||
R_ = 1/rho * (R_ - zn*xs'*R_); % Aktualisierung der inversen
|
||||
% Autokorrelationsmatrix R
|
||||
end ;
|
||||
fpo = flops;
|
||||
|
||||
% -------------------------------------------------------------------------
|
||||
% Ende rls.m
|
||||
Reference in New Issue
Block a user