📄 adapt_filter_arithmetic.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 + -