📄 rls.m
字号:
function [e,h]=rls(y,fl,lambda,sigma);
% [e,h]=rls(y,fl,lambda,sigma)
% y = input signal
% fl = filter length
% lambda = forgetting factor (0<lambda<=1)
% sigma = initialization value
% e = error signal
% h = filter coefficients
%
% ref _Adaptive_Filters_ by Cowan and Grant, p34
% cjm 13mar95
% Chris McCormack / Radiation Laboratory / University of Michigan
% c.mccormack@ieee.org
if sigma==0; sigma=cov(y); end
if lambda==0; lambda=.1; end
if fl<1;
e='rls : Illegal filter length'
else
sl=size(y);
if sl(1)<sl(2); y=y'; sl=sl(2); end
sl=sl(1); % set up length of signal
e=zeros(sl,1); % initialize
h=zeros(fl,1);
p=sigma*eye(fl);
phi=zeros(fl,1);
for n=1:sl;
e(n)=y(n)-phi'*h;
df=1/(lambda+phi'*p*phi);
k=p*phi*df;
p=(p-p*phi*df*phi'*p)/lambda;
h=h+k*e(n);
phi=[y(n); phi(1:fl-1)];
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -