递归最小二乘自适应滤波器matlab代码如下:
% % 函数调用方法 [en,w]=RLS_filter(输入噪声,输入信号)
%源代码
function [e,w]=RLS_filter(u,d)
M=2; %滤波器长度
w=zeros(M,1);
delta = 1e-7;
lambda = 0.99; %遗忘因子
P=eye(M)/delta; % eye(M)返回M*M单位矩阵
u=u(:); % 噪声
d=d(:); % 信号
% input signal length
N=length(u);
% error vector
e=d.';
% Step2: Loop, RLS
for n=M:N
uvec=u(n:-1:n-M+1);
e(n)=d(n)-w'*uvec; % 输出信号,第一次计算取值 w=[0;0]
k=lambda^(-1)*P*uvec/(1+lambda^(-1)*uvec'*P*uvec);
P=lambda^(-1)*P-lambda^(-1)*k*uvec'*P;
w=w+k*conj(e(n)); % conj(e(n))返回 e 中每个元素的复共轭
end
end