1、基于某MATLAB地ADSP AR2模型地LMS 与 RLS 算法分析报告MATLAB仿真实现LMS和RLS算法题目: 序列x(n)有AR(2)模型产生:,w(n)是均值为0、方差为1的高斯白噪声序列。用LMS算法和RLS算法来估计模型参数。按照课本第三章63页的要求,仿真实现LMS算法和RLS算法,比较两种算法的权值收敛速度,并对比不同u值对LMS算法以及值对RLS算法的影响。解答:1 数据模型(1)高斯白噪声用用randn函数产生均值为0、方差为1的标准正态分布随机矩阵来实现。随后的产生的信号用题目中的AR(2)模型产生,激励源是之前产生的高斯白噪声。(2)信号点数这里取为2000,用20
2、00个信号来估计滤波器系数。(3)分别取3个不同的u、值来分析对不同算法对收敛效果的影响。其中u=0.001,0.003,0.006,lam=1,0.98,0.94。2 算法模型2.1自适应算法的基本原理自适应算法的基本信号关系如下图所示:图 1 自适应滤波器框图输入信号x(n)通过参数可调的数字滤波器后产生输出信号y(n),将其与参考信号d(n)进行比较,形成误差信号e(n)。e(n)通过某种自适应算法对滤波器参数进行调整,最终是e(n)的均方值最小。当误差信号e(n)的均方误差达到最小的时候,可以证明信号y(n)是信号d(n)的最佳估计。2.2 LMS算法简介LMS算法采用平方误差最小的原
3、则代替最小均方误差最小的原则,信号基本关系如下:写成矩阵型式为:式中,W(n) 为n 时刻自适应滤波器的权矢量,N为自适应滤波器的阶数;X( n) 为n 时刻自适应滤波器的参考输入矢量,由最近N 个信号采样值构成,;d ( n) 是期望的输出值;e ( n) 为自适应滤波器的输出误差调节信号(简称失调信号) ;是控制自适应速度与稳定性的增益常数,又叫收敛因子或步长因子。2.3 RLS算法简介RLS算法是用二乘方的时间平均的最小化准则取代最小均方准则,并按时间进行迭代计算。其基本原理如下所示:称为遗忘因子,它是小于等于1的正数。参考信号或期望信号。第n次迭代的权值。均方误差。按照如下准则: 即越
4、旧的数据对的影响越小。对滤波器系数求偏导数,并令结果等于零知 整理得到标准方程 定义 标准方程可以化简成形式: 经求解可以得到迭代形式 定义:,则可知T的迭代方程为 系数的迭代方程为 其中增益和误差的定义分别为 由上边分析可知,RLS算法递推的步骤如下:1.在时刻n,已经知道和也已经存储在滤波器的实验部件中2.利用公式(1.9)、(1.10)、(1.11)和(1.12)计算,并得到滤波器的输出相应和误差即:3.进入第次迭代优点-其优点是收敛速度快,而且适用于非平稳信号的自适应处理条件-:是每次迭代时都知道输入信号和参考信号,计算量比较大3 仿真过程简介仿真过程按照如下过程进行(1)信号产生:首
5、先产生高斯白噪声序列w(n),然后将此通过一个简单的二阶自回归 滤波器生成信号,该滤波器的参数为(2)将步骤一生成的信号通过LMS和RLS自适应滤波器进行处理(3)通过改变u值对收敛速度的影响来分析LMS算法的性能以及通过改变值对收敛速度的影响来分析RLS算法的性能。(4)绘制各种图形曲线(5)源代码如下:%(1)信号序列与高斯白噪声的产生%参数初始化a1=1.4; %生成信号所用AR(2)滤波器的参数a2=-0.7;n=2000; %信号点数 %信号及白噪声信号序列的初始化x=zeros(1,n); %信号的初始化w=randn(1,n); %高斯白噪声的初始化,均值为0,方差为1 x(1)
6、=w(1); %信号前两点的初始赋值x(2)=a1*x(1)+w(2); %信号序列的产生for i=3:n x(i)=a1*x(i-1)+a2*x(i-2)+w(i);%信号由AR(2)产生end %绘制信号和高斯白噪声波形figure(1)plot(1:n,x,b:,1:n,w,r-);legend(信号序列,高斯白噪声) % 图例title(基于AR(2)模型产生的信号x和高斯白噪声w);xlabel(信号点数n);ylabel(x(n)/w(n); %(2)LMS和RLS算法下的参数a1、a2的收敛曲线%LMS滤波L=2; %滤波器长度u=0.001; %LMS算法下自适应增益常数初始
7、化wL=zeros(L,n);%LMS滤波器的权值初始化for i=(L+1):n X=x(i-1:-1:(i-L); y(i)=X*wL(:,i); %i时刻输出信号 e(i)=x(i)-y(i); %i时刻误差信号 wL(:,(i+1)=wL(:,i)+2*u*e(i)*X; %i时刻滤波器的权值end;a1L=wL(1,1:n); % a1在LMS算法下值的变化a2L=wL(2,1:n); % a2在LMS算法下值的变化 %RLS滤波L=2; %滤波器长度lam=0.98; %RLS算法下lambda取值wR=zeros(L,n);%权系数,初值为0T=eye(L,L)*10;% %RL
8、S算法下T参数的初始化,T初始值为10for i=(L+1):n X=x(i-1:-1:(i-L); K=(T*X)/(lam+X*T*X);%i时刻增益值 e1=x(i)-wR(:,i-1)*X; wR(:,i)=wR(:,i-1)+K*e1; %i时刻权值 y(i)=wR(:,i)*X;%输出信号 e(i)=x(i)-y(i);%预测误差 T=(T-K*X*T)/lam; %i时刻的维纳解end;a1R=wR(1,1:n); % a1在RLS算法下值的变化a2R=wR(2,1:n); % a2在RLS算法下值的变化 %绘制LMS与RLS算法下a1、a2收敛曲线figure(2)plot(1
9、:n,a1L,r-,1:n,a1R,b:,1:n,a2L,g-,1:n,a2R,m-.,1:n,a2,k-,1:n,a1,k-);legend(LMS-a1变化,RLS-a1变化,LMS-a2变化,RLS-a2变化,a1收敛值,a2收敛值,0); % 图例title(LMS与RLS算法对比);xlabel(信号点数n);ylabel(对应a1、a2的值); %(3)LMS算法下不同u值的参数收敛曲线wL=zeros(L,n,3);eL=zeros(n,3); % LMS算法下误差初始化yL=zeros(n,3); % LMS算法下滤波器输出初始化u=0.001,0.003,0.006; %不同
10、的u值 for j=1:3 for i=(L+1):n yL(i,j)=x(i-1:-1:i-2)*wL(1:L,i-1,j); eL(i,j)=x(i)-yL(i,j); wL(1:L,i,j)=wL(1:L,i-1,j)+2*u(j)*eL(i,j)*x(i-1:-1:i-L); endenda1L1=wL(1,1:n,1);a1L2=wL(1,1:n,2);a1L3=wL(1,1:n,3); figure(3)plot(1:n,a1L1,b-,1:n,a1L2,r:,1:n,a1L3,c-.,1:n,a1,k) % 画图显示不同u值下LMS算法性能差别legend(u=0.001,u=0
11、.003,u=0.006,a1收敛值,0) % 图例title(LMS算法下不同的u值对a1收敛速度影响)xlabel(信号点数 n)ylabel(对应a1的值) %(4)RLS算法下不同lambda值的参数收敛曲线wR=zeros(2,n,3); % RLS算法下自适应滤波器参数初始化eR=zeros(n,3); % RLS算法下误差项初始化yR=zeros(n,3); % RLS算法下滤波器输出初始化lam=1,0.98,0.94;for j=1:3 for i=(L+1):n xR=x(i-1:-1:i-2); k=(T*xR)/(lam(j)+xR*T*xR); T=(T-k*xR*T
12、)/lam(j); eR=x(i)-xR*wR(1:2,i-1,j); yR(i,j)=xR*wR(1:2,i-1,j); wR(1:2,i,j)=wR(1:2,i-1,j)+k*eR; endenda1R1=wR(1,1:n,1);a1R2=wR(1,1:n,2);a1R3=wR(1,1:n,3); figure(4)plot(1:n,a1R1,b-,1:n,a1R2,r:,1:n,a1R3,c-.,1:n,1:n,a1,k) % 画图显示不同lamda值下RLS算法性能差别legend(lam=1,lam=0.98,lam=0.94,a1收敛值,0) % 图例title(RLS算法下不同的
13、lam值对a1收敛速度影响)xlabel(信号点数 n)ylabel(对应a1的值)4 仿真结果 信号和高斯白噪声波形如图(1)所示:图1 信号和高斯白噪声波形图2 LMS算法和RLS算法收敛曲线对比图3 u对LMS收敛速度的影响图4 对RLS收敛速度的影响4 结果分析(1)由(图 2)可以看到在u和值相当的情况下,RLS比LMS具有更快的收敛速度,但是RLS权系数收敛后出现了较大的噪声,是因为RLS中有效记忆长度只有49.(2)由(图 3)可知u越小,LMS算法的收敛速度越慢,但权系数收敛后噪声越小。(3)有(图 4)可知越大,RLS算法的收敛速度越慢,但权系收敛后噪声越小,当为1时看出收敛后是几乎没有噪声的,因为有效记忆长度此时为无穷大。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1