遞歸最小二乘自適應濾波器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