LMS算法-MATLAB程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

%LMS算法演示(matlab)%设置参数,N为采样个数,u为步长clear,clc;N=16;u=0.1;%设置迭代次数kk=250;%pha为随机噪声的平均功率rk=randn(1,k)/2;%%正态分布的随机矩阵pha=mean(rk);%%求元素平均值%设置起始权值wk(1,:)=[00];%用LMS算法迭代求最佳权值fori=1:kxk(i,:)=[sin(2*pi*i/N)sin(2*pi*(i-1)/N)]+rk(i);%输入信号yk(i)=xk(i,:)*wk(i,:)';%输出信号dk(i)=2*cos(2*pi*i/N);%期望信号err(i)=dk(i)-yk(i);%误差wk(i+1,:)=wk(i,:)+2*u*err(i)*xk(i,:);%权值迭代end[x,y]=meshgrid([-2:0.1:8],[-10:0.1:0]);%求性能表面z=(0.5+pha)*(x.^2+y.^2)+x.*y*cos(2*pi/N)+2*y*sin(2*pi/N)+2;%求理论最佳权值x1,y1x1=2*cos(2*pi/N)*sin(2*pi/N)/((1+pha)^2-(cos(2*pi/N))^2);y1=-2*(1+2*pha)*sin(2*pi/N)/((1+pha)^2-(cos(2*pi/N))^2);%画性能表面的等高线figure,contour(x,y,z,[0.781.96.313.623.837]);%%等值线图%画迭代时权值的变化holdon;plot(wk(:,1),wk(:,2),'r');%标注最佳权值的位置holdon;plot(x1,y1,'*');%绘制误差与迭代次数的图figure,plot(err);%基于RLS算法的自适应线性预测clc;clearall;N=300;M=100;%计算的次数w1=zeros(N,M);w2=zeros(N,M);I=eye(2);e1=zeros(N,M);fork=1:M%产生白噪声Pv=0.008;%定义白噪声方差a1=-0.195;a2=0.95;o=0.02;r=0.95;m=5000;%产生5000个随机数v=randn(1,m);v=v*sqrt(Pv);%产生均值为0,方差为Pv的白噪声%m=1:N;v=v(1:N);%取出前1000个%plot(m,v);title('均值为0,方差为0.0965的白噪声');ylabel('v(n)');xlabel('n');v=v';%向量初使化x=zeros(1,N);x(1)=v(1);%x(0)=v(0)x(2)=v(2)-a1*v(1);%x(1)=v(1)-a1*v(0)w=zeros(2,N);w(:,1)=[00]';%w(0)=[00]';X=zeros(2,N);X(:,2)=[v(1)0]';%X(0)=[00]';X(1)=[v(0)0]'C=zeros(2,2*N);C(:,1:2)=1/o.*I;%C(0)=1/o*Ie=zeros(1,N)';%定义误差向量u=zeros(1,N);g=zeros(2,N);%根据RLS算法进行递推forn=1:N-2x(n+2)=v(n+2)-a1*x(n+1)-a2*x(n);X(:,n+2)=[x(n+1)x(n)]';u(n)=X(:,n+1)'*C(:,2*n-1:2*n)*X(:,n+1);g(:,n)=(C(:,2*n-1:2*n)*X(:,n+1))./(r+u(n));w(:,n+1)=w(:,n)+g(:,n)*(x(n+1)-X(:,n+1)'*w(:,n));C(:,2*n+1:2*(n+1))=1/r.*(C(:,2*n-1:2*n)-g(:,n)*X(:,n+1)'*C(:,2*n-1:2*n));e(n)=x(n+1)-X(:,n+1)'*w(:,n);w1(:,k)=w(1,:)';w2(:,k)=w(2,:)';%将每次计算得到的权矢量值储存e1(:,k)=e(:,1);%将每次计算得到的误差储存endend%求权矢量和误差的M次的平均值wa1=zeros(N,1);wa2=zeros(N,1);en=zeros(N,1);fork=1:Mwa1(:,1)=wa1(:,1)+w1(:,k);wa2(:,1)=wa2(:,1)+w2(:,k);en(:,1)=en(:,1)+e1(:,k);endn=1:N;subplot(221)plot(n,w(1,n),n,w(2,n));%作出单次计算权矢量的变化曲线xlabel('n');ylabel('w(n)');title('w1(n)和w2(n)的单次变化曲线(线性预测,RLS)')subplot(222)plot(n,wa1(n,1)./M,n,wa2(n,1)./M);%作出100次计算权矢量的平均变化曲线xlabel('n');ylabel('w(n)');title('w1(n)和w2(n)的100次平均变化曲线')subplot(223)plot(n,e(n,1).^2);%作出单次计算e^2的变化曲线xlabel('n');ylabel('e^2');title('单次计算e^2的变化曲线');subplot(224)plot(n,(en(n,1)/M).^2);%作出M次计算e^2的平均变化曲线xlabel('n');ylabel('e^2');title('100次计算e^2的平均变化曲线');

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功