- refactored

This commit is contained in:
2022-06-30 13:32:40 +02:00
parent 77cd5261b1
commit 776932e5d1
144 changed files with 0 additions and 38 deletions
+55
View File
@@ -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