Files
matlab/common/rls2.m
T
jens b31f3e7435 - added
git-svn-id: http://moon:8086/svn/matlab/trunk@153 801c6759-fa7c-4059-a304-17956f83a07c
2021-03-22 20:28:22 +00:00

71 lines
1.9 KiB
Matlab
Executable File

%===================================================================
%-------------------------------------------------------------------
%
% Adaptive Filter
%
% Simulationen
%
% [E,W,w,inv_R]=rls(N,X,D,w_start,rho)
%
% RLS-Algorithmus
%
% E = Fehlersignal E[.]
% W = Filterkoeffizienten im zeitlichen Verlauf
% w = Filterkoeffizienten am Ende der Adaption
% inv_R = Inverse deterministische Korrelationsmatrix
% nach Adaptionsende
% N = Anz. Filterkoeffizienten = Filterordnung+1
% X = Filtereingang X[.]
% D = erwuenschtes Signal D[.]
% w_start = Startwerte Filterkoeffizienten
% rho = Vergessensfaktor
%
%-------------------------------------------------------------------
%
% author: Markus Hofbauer
% ISI, ETH Zuerich (Switzerland)
%
% created: 7/2000
%
%
%-------------------------------------------------------------------
%
% File : rls.m
%
% Startfile: simX.m
%
%-------------------------------------------------------------------
%===================================================================
function [E,W,w,inv_R]=rls(N,X,D,w_start,rho)
p0=1000000; % Initialisierung von
inv_R=p0*eye(N); % inv_R
adaptlen=length(X);
w= w_start;
W=zeros(N,adaptlen);
E=zeros(adaptlen,1);
%-------------------------------------------------------------------
% RLS Update Loop
%-------------------------------------------------------------------
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
c=1/(rho+x'*inv_R*x);
inv_R=1/rho*(inv_R-c*inv_R*x*x'*inv_R); % Aufdatierung von inv_R
w=w+inv_R*e*x; % Aufdatierung von w
E(i)=e;
end;