Author :Jeffrey
白噪声经过AR模型的输出作为LMS滤波器的输入,已知:a1=1.558;a2=-0.81;白噪声方差为1.0,均值为0;u=0.002;利用Matlab实现:
(1)给出单次运算和200次运算的LMS算法学习曲线
(2)给出单次运算和200次运算的权值随n变换曲线
源程序:
%Author:Jeffrey
%My blog: http://blog.csdn.net/gueter/
%DATE: 2007年03月31日 星期六 15时45分49秒
%Eviroment :kernel:2.6.15-28-686
% Matlab6.5
clear all
clear
tic;
a1=1.558;
a2=-0.81;
b=1;
e2=zeros(201,2048);
w11=zeros(201,2048);
w21=zeros(201,2048);
u=zeros(201,2048);
for k=1:200
v=randn(1,2048);
w1=zeros(1,2049);
w2=zeros(1,2049);
k1=0.002;
for n=3:2048
u(n)=v(n)+a1*u(n-1)+a2*u(n-2);
y(n)=w1(n)*u(n-1)+w2(n)*u(n-2);
e(n)=u(n)-y(n);
e1(n)=e(n)*e(n);
w1(n+1)=w1(n)+2*k1*e(n)*u(n-1);
w2(n+1)=w2(n)+2*k1*e(n)*u(n-2);
end;
e2(k+1,:)=e1(1:2048)+e2(k,:);
w11(k+1,:)=w1(1:2048)+w11(k,:);
w21(k+1,:)=w2(1:2048)+w21(k,:);
end;
e3=e2(201,:)/200;
w13=w11(201,:)/200;
w22=w21(201,:)/200;
figure(1)
subplot(1,2,1)
plot(e1,'r')
hold on
plot(e3,'k');
hold off
subplot(1,2,2)
plot(w1,'m');
hold on
plot(w2,'y')
plot(w13,'k');
plot(w22,'r');
hold off
toc
运行结果见下图: