递归最小二乘自适应滤波器matlab代码

递归最小二乘自适应滤波器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

发布了11 篇原创文章 · 获赞 4 · 访问量 2404

猜你喜欢

转载自blog.csdn.net/Su_jinshi/article/details/103327693
今日推荐