?? 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 + -