基于LMS算法的自适应滤波收敛性的Matlab仿真

Author :Jeffrey  
My Blog: http://blog.csdn.net/gueter/  

                                            

白噪声经过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

运行结果见下图:
基于LMS算法的自适应滤波收敛性的Matlab仿真_第1张图片
 

你可能感兴趣的:(算法,Date,Blog,matlab,plot)