欢迎来到天天文库
浏览记录
ID:55630884
大小:154.00 KB
页数:15页
时间:2020-05-21
《adsp_华科实验报告――Lms算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、现代数字信号处理实验报告院系:班级:姓名/学号:题目一题目:按照课本第三章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算法来实现,
2、并通过信号点来反映自适应权系数的过度过程,以此来比较。(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算法最核心的思想是用平方误差代替均方误差,每次迭代中使用很粗略的梯度估计值来代替精确
3、的梯度值,因而权系数的调整过程是有噪声的,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-1)W=W+inv(Rxx)*X*e;%RLS算法的权系数迭代公式a1R(i)=-W(1);%LMS算法中权系数a1的提取end;RLS算法的关键是用二乘方的时间平均的最小化准则取代最小均方准则,并按时间进行迭代计算。对于非平稳随
4、机输入信号引入一个加权因子对i时刻的误差值进行修正,由于加权因子取值范围从0~1,因此时间越久远的数据对误差的贡献就越小。其最大的特点是收敛速度快,但每次的迭代计算量大。1.3仿真过程简介仿真过程按照如下过程进行(1)信号产生:首先产生高斯白噪声序列Noise(n),Noise=randn(1,n);然后通过一个简单的二阶自回归滤波器生成信号,该滤波器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);从而生成序列
5、。(2)将步骤一生成的信号通过LMS和RLS自适应滤波器进行处理(3)通过改变λ值对收敛速度的影响来分析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
6、(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)
7、*x(i-2);x(i-1)*x(i-2)x(i-2)*x(i-2)];%列出自相关矩阵T=1/(T+trace(Rxx));%求出迹的值,为后续u的判断做准备if(u>T)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(
8、2,2)*10;%%RLS算法下T参数的初始化,T初始值为10Rxx=inv(T);w1(1)=0;w2(1
此文档下载收益归作者所有