⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adapt_filter_arithmetic.m

📁 lms rls 比较算法 能独立运行 有图
💻 M
字号:

t=500; %----设置迭代步数----
mu=0.1; %----设置步长----
nvar=0.01;
noise=nvar*randn(1,t); %----设置噪声----
n=11;
B=[0.3 0.9 0.3];
A=[1 0 0];
for k=1:t
    if rand>0.5
        signal(k)=-1;
    else
        signal(k)=1;
    end
    x(k)=filter(B,A,signal(k))+noise(k);
end
d=[zeros(1,7) signal]; %----延时7个点 ----
sum_square_e=0;
sum_square_e_rls=0;
lamda=0.94;
u=eye(11);
%----RLS算法----
initial_status_rls=initrls(ones(1,n),u,lamda);
[output_rls,e_rls,initial_status_rls]=adaptrls(x,d(1:500),initial_status_rls);
%----LMS算法----
initial_status=initlms(zeros(1,n),mu);
[output,e,initial_status]=adaptlms(x,signal,initial_status);
square_e(k)=e(k)^2;
square_e_rls(k)=e_rls(k)^2;
output_rls
output
figure(3);
plot(1:t, square_e);
grid;title('单次LMS实验平均曲线(步长取0.1,噪声方差取0.01)');xlabel('迭代步数');ylabel('Mean Square Error');
figure(4);
plot(1:t,square_e_rls);
grid;title('单次RLS实验平均曲线(步长取0.94,噪声方差取0.01)');xlabel('迭代步数');ylabel('Mean Square Error');
%----20次独立实验----
for m=1:20
    %----RLS算法----
    initial_status_rls=initrls(ones(1,n),u,lamda);
   [output_rls,e_rls,initial_status_rls]=adaptrls(x,d(1:500),initial_status_rls);
    %----LMS算法----
    initial_status=initlms(zeros(1,n),mu);
    [output,e,initial_status]=adaptlms(x,signal,initial_status);
    for k=1:t
        square_e(k)=e(k)^2;
        square_e_rls(k)=e_rls(k)^2;
    end  
    sum_square_e=sum_square_e+square_e;
    sum_square_e_rls=sum_square_e_rls+square_e_rls;
end
mean_square_e=sum_square_e/20;
mean_square_e_rls=sum_square_e_rls/20;
figure(1);
plot(1:t,mean_square_e);
grid;title('20次LMS实验平均曲线(步长取0.1,噪声方差取0.01)');xlabel('迭代步数');ylabel('Mean Square Error');
figure(2);
plot(1:t,mean_square_e_rls);
grid;title('20次RLS实验平均曲线(步长取0.94,噪声方差取0.01)');xlabel('迭代步数');ylabel('Mean Square Error');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -