您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > adsp_华科实验报告――Lms算法
现代数字信号处理实验报告院系:班级:姓名/学号:题目一题目:按照课本第三章63页的要求,仿真实现LMS算法和RLS算法,比较两种算法的权值收敛速度,并对比不同λ值对RLS算法的影响。解答:1.1数据模型(1)均值为0、方差为1的白噪声信号:用randn函数产生均值为0、方差为1的标准正态分布随机矩阵来实现。根据a1=-1.6,a2=0.8,x(n)+a1*x(n-1)+a2*x(n-2)=e(n);来生成正真的x(n)序列,其中e(n)表示的是噪声信号。(2)信号点数这里取为1000,用1000个信号来估计滤波器系数。分别用LMS,RLS算法来实现,并通过信号点来反映自适应权系数的过度过程,以此来比较。(3)分别取4个不同的λ值来分析RLS算法对收敛效果的影响。其中lambda=[1,0.98,0.96,0.94]。1.2算法模型1.2.1LMS算法模型fori=3:1:N%权系数迭代N次W=W+2*u*X*e(i-1);%LMS算法的权系数迭代公式X=[x(i-1)x(i-2)]';%LMS算法中输入信号矢量的递推e(i)=x(i)-W'*X;a1L(i)=-W(1);%LMS算法中权系数a1的提取endLMS算法最核心的思想是用平方误差代替均方误差,每次迭代中使用很粗略的梯度估计值来代替精确的梯度值,因而权系数的调整过程是有噪声的,w不再是确定性函数而变成了随机变量,当迭代过程收敛后,权矢量将在最佳权矢量附近随机起伏。1.2.2RLS算法模型fori=3:1:NX=[x(i-1),x(i-2)]';Rxx=lbda*Rxx+X*X';%迭代公式中自相关矩阵的计算e=x(i)-W'*X;%输出信号误差e(n\n-1)W=W+inv(Rxx)*X*e;%RLS算法的权系数迭代公式a1R(i)=-W(1);%LMS算法中权系数a1的提取end;RLS算法的关键是用二乘方的时间平均的最小化准则取代最小均方准则,并按时间进行迭代计算。对于非平稳随机输入信号引入一个加权因子对i时刻的误差值进行修正,由于加权因子取值范围从0~1,因此时间越久远的数据对误差的贡献就越小。其最大的特点是收敛速度快,但每次的迭代计算量大。1.3仿真过程简介仿真过程按照如下过程进行(1)信号产生:首先产生高斯白噪声序列Noise(n),Noise=randn(1,n);然后通过一个简单的二阶自回归滤波器生成信号()xn,该滤波器a1=-1.6,a2=0.8。头两个可以表达出来x(1)=Noice(1);x(2)=Noise(2)-a2*x(1);由x(n)=Noise(n)-a1*x(n-1)-a2*x(n-2);从而生成序列。(2)将步骤一生成的信号通过LMS和RLS自适应滤波器进行处理(3)通过改变λ值对1a收敛速度的影响来分析RLS算法的性能。(4)绘制各种图形曲线(5)源代码如下:按照步骤一,生成信号的程序如下所示,生成的信号包含n个点(1)%输入信号序列的产生clearall;clc;%初始化参数a1=-1.6;%生成信号x(n)的参数a2=0.8;N=1000;%信号点数%信号及白噪声信号序列的初始化x=zeros(1,N)';%信号的初始化Noise=randn(1,N)';%白噪声的初始化,均值为0,方差为1x(1)=Noise(1);%信号前两点的初始赋值x(2)=Noise(2)-a1*x(1);%信号序列的产生forn=3:Nx(n)=Noise(n)-a1*x(n-1)-a2*x(n-2);end生成信号之后,将信号输入LMS和RLS滤波器进行处理,其matlab程序如下:(2)%LMS和RLS算法下的参数a1的收敛曲线%LMS滤波u=0.002;%LMS算法下自适应增益常数初始化Rxx=[x(1)*x(1)0;00];T=0;e(1)=0;W=[0;1];X=[x(2);x(1)];e(2)=x(2)-W'*X;fori=3:1:N%权系数迭代N次Rxx=[x(i-1)*x(i-1)x(i-1)*x(i-2);x(i-1)*x(i-2)x(i-2)*x(i-2)];%列出自相关矩阵T=1/(T+trace(Rxx));%求出迹的值,为后续u的判断做准备if(uT)error('uislargerthan1/t[R]');%判断u的值是否小于迹的倒数endW=W+2*u*X*e(i-1);%LMS算法的权系数迭代公式X=[x(i-1)x(i-2)]';%LMS算法中输入信号矢量的递推e(i)=x(i)-W'*X;a1L(i)=-W(1);%LMS算法中权系数a1的提取end%RLS滤波lbda=1;%RLS算法下lambda取值T=eye(2,2)*10;%%RLS算法下T参数的初始化,T初始值为10Rxx=inv(T);w1(1)=0;w2(1)=0;w1(2)=0;w2(2)=0;W=[w1(2);w2(2)];%初始权值P=[0;0];fori=3:1:NX=[x(i-1),x(i-2)]';Rxx=lbda*Rxx+X*X';%迭代公式中自相关矩阵的计算e=x(i)-W'*X;%输出信号误差e(n\n-1)W=W+inv(Rxx)*X*e;%RLS算法的权系数迭代公式a1R(i)=-W(1);%LMS算法中权系数a1的提取end;%绘制LMS与RLS算法下a1、a2收敛曲线figure(1)plot(1:N,a1L,'r-',1:N,a1R,'b-',1:N,a1,'k-');legend('LMS-a1变化','RLS-a1变化','a1收敛值',0);%图例title('自适应权系数a1(n)的过渡过程(RLS和LMS算法比较)');xlabel('信号点数N');ylabel('对应a1的值');(3)%RLS算法下不同lambda值的参数收敛曲线w1(1)=0;w2(1)=0;w1(2)=0;w2(2)=0;W=[w1(2);w2(2)];lambda=[1,0.98,0.96,0.94];forj=1:4fori=3:NX=[x(i-1),x(i-2)]';Rxx=lambda(j)*Rxx+X*X';%迭代公式中自相关矩阵的计算e=x(i)-W'*X;%输出信号误差e(n\n-1)W=W+inv(Rxx)*X*e;%RLS算法的权系数迭代公式a1R1(i)=-W(1);a1R2(i)=-W(1);a1R3(i)=-W(1);a1R4(i)=-W(1);endendfigure(2)plot(1:N,a1R1,'b-',1:N,a1R2,'r:',1:N,a1R3,'c-.',1:N,a1R4,'g-.',1:N,a1,'k')%画图显示不同lamda值下RLS算法性能差别legend('lambda=1','lambda=0.98','lambda=0.96','lambda=0.94','a1收敛值',0)%图例title('RLS算法下遗忘因子对权系数a1收敛速度影响')xlabel('信号点数N')ylabel('对应a1的值')1.4仿真结果及分析LMS和RLS算法下的参数a1的收敛曲线如下图:01002003004005006007008009001000-1.8-1.6-1.4-1.2-1-0.8-0.6-0.4-0.20信号点数N对应a1的值LMS与RLS算法收敛情况对比LMS-a1变化RLS-a1变化a1收敛值图1自适应权系数a1(n)的过渡过程(RLS和LMS算法比较)上图是两种算法下a1的收敛曲线,其中黑色的线表示a1原值,红色的线表示LMS算法关于a1的收敛曲线,蓝色的表示RLS的收敛曲线。由可以看到在u和值相同的情况下(u=0.002,=1),RLS比LMS具有更快的收敛速度,但是RLS权系数收敛后出现了较大的噪声。由于LMS算法是以梯度增量逐渐逼近最佳值,因此较为平缓的变化趋势;而RLS算法曲线起步变化幅度比较大,但其能够迅速找到最佳值,权系数收敛后出现了较大的噪声因为RLS中有效记忆长度只有49,在计算最加权系数时没有充分利用能够获取的全部采样数据。01002003004005006007008009001000-2-1.8-1.6-1.4-1.2-1-0.8-0.6-0.4-0.20信号点数N对应a1的值RLS算法下遗忘因子对权系数a1收敛速度影响lambda=1lambda=0.98lambda=0.96lambda=0.94a1收敛值图2RLS算法下遗忘因子对权系数a1(n)的影响图中分别画出来关于四种不同情况下,RLS算法下遗忘因子对权系数a1(n)的影响可知越大,RLS算法的收敛速度越慢,算法的有效记长度0t=/(1-),越小对应的0t越小,意味着对信号的非平稳性的跟踪越好,而太小0t会小于信号每个平稳段的有效时间,这时不能充分利用所有能够获取的取样数据,结果算出的权矢量w(n)将会受到噪声的影响。是遗忘因子,其值越接近1表明算法越趋近最小均方准则,那么其曲线的变化就越平稳(上面已经分析了)。对于平稳模型的最佳值为1。但权系收敛后噪声越小,当为1时看出收敛后是几乎没有噪声的,因为有效记忆长度此时为无穷大。题目二题目:WriteasmallMATLABprogramthatimplementsthepthorderLevinson-Durbin(L-D).Run/TesttheprogramusingaAR(2)process(b0=1,a1=0,a2=0.81)andanMA(2)(bn=1,1,1)process-about1000samples.UseL-Dwithp=2(fortheAR)and10(fortheMA).PlottheARspectraproducedinthetwocaseswithL-D.Listthedirectformandthereflectioncoefficientsinatable.ProfiletheL-D(totalnumberofcomputationsforapthorderL-D).2.1数据模型N=1000,根据题目采样数据来验证AR(2)和MR(2)模型uu=wgn(1000,1,1);%生成uu(n)是一个均值为零,功率为一的白噪声P1=2;%AR计算的阶数,与X的自相关函数的阶数少一P2=10;%10阶L-D算法对MA产生的信号模型进行谱估计aa0=1;在计算Dk时初始条件ak,0=1这里当k=0时既有aa0,从而初始DkRxx(n)=mean(X’*X)%自相关函数an=[100.81]%题目所给的参数,以便后续计算x(n)的功率谱密度用到ssigma=zeros(1,p);%sigma数组的平方D=zeros(1,p);%Dk数组初始化arefa=zeros(1,p);%arefa数组初始化aa=zeros(p,p);%系数数组初始化2.2L_D算法模型Levinson-Durbin算法是一种利用迭代的方法计算Yule-walker方程,从而得到AR模型参数的方法。求解AR模型的参数只需要求解AR模型的Yule-Walker方程,常用解法,如高斯消元法需要的运算量数量级为p3而Levinson-Durbin算法的运算量数量级为p2。这是一种按阶次进行递推的算法,即首先以AR(0)和AR(1)模型参数作为初始条件,计算AR(2)模型参数,然后根据这些参数计算AR(3)模型参数,等等,一直到计算出AR(p)模型参数为止。fork=1:p-1ssigma(k)=Rxx(1)+sum(a(k,1:k).*Rxx(2:k+1));%sigma的平方的计算D(k)=aa0*R(k+2)+sum(aa(k,1:k).*fliplr(Rxx(2:k+1)));%DK的计算arefa(k+1)=D(k)/(ssigma(k)+eps);%反射系数r的计算ssigma(k+1)=(1-arefa(k+1)^2)*ssigma(k);%sigma平方的迭代公式aa(k+1,1:k)=aa(k,1:k)
本文标题:adsp_华科实验报告――Lms算法
链接地址:https://www.777doc.com/doc-4535966 .html