RLS算法Matlab实现

RLS 同时被 2 个专栏收录
1 篇文章 0 订阅
3 篇文章 0 订阅

RLS算法Matlab实现

递归最小二乘算法matlab代码实现

RLS迭代

在这里插入图片描述

Matlab实现

// RLS
clc;clear
Delta=[1 0.1 0.01 0.001];
Lamda=[1 0.9 0.5 0.1];
cishu = 1;
for cishu=1:4
    
    dotnumber=10000;
    u=wgn(dotnumber,1,0);
    b=1;a=[1 -0.9];
    u=filter(b,a,u);
    u(dotnumber+1:end)=[];
    noise=wgn(dotnumber,1,-60);
    h=[-0.1 0.2 0.7 0.4 -0.2 -0.1 0.12 -0.25].';
    wo=[h;zeros(4,1)];
    d=filter(h,1,u);
    d(dotnumber+1:end)=[];
    d=d+noise;
    len=12;
    mu = 0.001;
    w = zeros(len,1);
    w_eror = zeros(dotnumber,1);
    e = zeros(dotnumber,1);
    
    vector_u = zeros(len,1);
    vector_d = zeros(len,1);
%	delta = 0.01;    %固定delta
    delta = Delta(cishu);   %四次迭代,不同delta
    P = 1/delta*eye(len);
    lamda = 1;      %固定delta
%    lamda = Lamda(cishu);   %四次迭代,不同delta    
%    Pi = zeros(1,len);
    
for n=1:dotnumber
    vector_u = [u(n); vector_u(1:end-1)];
%    vector_d = [d(n); vector_d(1:end-1)];
    Pi = P * vector_u;
    k = Pi/(lamda + vector_u'*Pi);
    kesai = d(n) - w'*vector_u;
    w = w + k*conj(kesai);
    P =  (1/lamda)*P - (1/lamda)*k*vector_u'*P;
    w_error(n)=norm(w-wo)^2;
end

hold on
plot(10*log10(w_error))
title('lamda = 1')
%title('delta = 0.01')
xlabel('采样点')
ylabel('系数误差 (dB)');
%legend('RLS','LMS','AP');
legend('delta=1','delta=0.1','delta=0.01','delta=0.001');
%legend('lamda=1','lamda=0.9','lamda=0.5','lamda=0.1');
end

  • 4
    点赞
  • 1
    评论
  • 34
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值