您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 自适应滤波LMS与RLS的matlab实现
自适应滤波LMS与RLS的matlab实现MATLAB仿真实现LMS和RLS算法的二阶AR模型及仿真结果分析一、题目概述:二阶AR模型如图1a所示,可以如下差分方程表示:)()()2()1()()(21ndnvnxanxanvnx(1)图1a其中,v(n)是均值为0、方差为0.965的高斯白噪声序列。𝑎1,𝑎2为描述性参数,.95,0,195.021aa设x(-1)=x(-2)=0,权值𝑤1(0)=𝑤2(0)=0,μ=0.04①推导最优滤波权值(理论分析一下)。②按此参数设置,由计算机仿真模拟权值收敛曲线并画出,改变步长在此模拟权值变化规律。③对仿真结果进行说明。④应用RLS算法再次模拟最优滤波权值。解答思路:(1)高斯白噪声用normrnd函数产生均值为0、方差为0.965的正态分布随机1*N矩阵来实现。随后的产生的信号用题目中的二阶AR模型根据公式(1)产生,激励源是之前产生的高斯白噪声。(2)信号长度N取为2000点,用以观察滤波器权值变化从而估计滤波器系数,得到其收敛值。(3)仿真时分别仿真了单次LMS算法和RLS算法下的收敛性能以及100次取平均后的LMS和RLS算法的收敛性能,以便更好的比较观察二者的特性。(4)在用不同的分别取3个不同的μ值仿真LMS算法时,μ值分别取为0.001,0.003,0.006;用3个不同的λ值仿真RLS算法时λ值分别取为1,0.98,0.94,从而分析不同步长因子、不同遗忘因子对相应算法收敛效果的影响。二、算法简介1.自适应算法的基本原理自适应算法的基本信号关系如下图所示:Σ自适应算法参数可调数字滤波器x(n)d(n)y(n)e(n)-+图1b自适应滤波器框图输入信号x(n)通过参数可调的数字滤波器后产生输出信号y(n),将其与参考信号d(n)进行比较,形成误差信号e(n)。e(n)通过某种自适应算法对滤波器参数进行调整,最终是e(n)的均方值最小。当误差信号e(n)的均方误差达到最小的时候,可以证明信号y(n)是信号d(n)的最佳估计。2.LMS算法简介LMS算法采用平方误差最小的原则代替最小均方误差最小的原则,信号基本关系如下:10()()()()()()(1)()2()()(0,1,2,....1)NiiiynwnxniendnynwnwnenxniiN(2)写成矩阵型式为:()()()()()()(1)()2()()TynWnXnendnynWnWnenXn(3)式(3)中,W(n)为n时刻自适应滤波器的权值,011()[(),(),....()]TNWnwnwnwn,N为自适应滤波器的阶数,本设计中取为2000;X(n)为n时刻自适应滤波器的参考输入矢量,由最近N个信号采样值构成,()[(),(1),....(1)]TXnxnxnxnN;d(n)是期望的输出值;e(n)为自适应滤波器的输出误差调节信号(简称失调信号);μ是控制自适应速度与稳定性的增益常数,又叫收敛因子或步长因子。3.RLS算法简介RLS算法是用二乘方的时间平均的最小化准则取代最小均方准则,并按时间进行迭代计算。其基本原理如下所示::遗忘因子,它是小于等于1的正数。:dn参考信号,也可称为期望信号。():nw第n次迭代的权值。:n均方误差。RLS算法的准则为:20minnnkknek(4)上式越旧的数据对n的影响越小。通过计算推导得到系数的迭代方程为:w(n)=w(n−1)+k(n)𝑒∗(𝑛)(5)式(5)中,增量k(n)和误差𝑒∗(𝑛)计算公式如下:(n1)x(n)k(n)(n)T(n1)x(n)TTx(6)𝑒∗(𝑛)=𝑑∗(𝑛)−𝑥𝑇(𝑛)∗𝑤(𝑛−1)(7)式(6)中T(n)=𝑅̂−1(𝑛),也就是当前时刻自相关矩阵的逆。(n)T按如下方式更新:(n)T=((n1)T-k(n)*x(n)T*(n1)T)/(8)由上边分析可知,RLS算法递推的步骤如下:1.在时刻n,(1),(1)nnwT和(),()dnnx也已经存储在滤波器的相应器件中2.利用公式(5)、(6)、(7)和(8)计算T(n)、w(n)、k(n)、𝑒∗(𝑛),并得到滤波器的输出相应()yn和误差()en即:()()()Tynnnwx(9)()()()endnyn(10)3.进入第1n次迭代这样做的优点是收敛速度快,而且适用于非平稳信号的自适应处理缺点是每次迭代时都要知道输入信号和参考信号,计算量比较大三、仿真过程仿真过程按照如下过程进行(1)信号产生:首先产生高斯白噪声序列w(n),然后将此通过一个参数为𝑎1=-0.195,𝑎2=0.95简单的二阶自回归滤波器生成信号()xn。(2)将step(1)生成的信号通过LMS和RLS自适应滤波器进行处理(3)通过改变μ值对𝑤1,𝑤2收敛速度的影响来分析LMS算法的性能以及通过改变λ值对𝑤1,𝑤2收敛速度的影响来分析RLS算法的性能。(4)绘制相应图形曲线四、仿真以及结果分析信号和高斯白噪声波形如图2所示:图2信号和高斯白噪声波形图2中,上边的图形为信号波形,下边的为加性高斯白噪声。图3(a)LMS算法下单次收敛曲线图3(b)LMS算法下百次平均收敛曲线分析1:图3中,a、b两幅图分别为单次实现的LMS算法下最优权值变化过程和100次仿真实现后取平均值做的图,两个权值初始值由已知条件设置为0,之后收敛到两个定值。a图展现了滤波器权系数迭代更新的过程,可以发现其并不是平滑的变化,而是随机起伏的,跟最陡下降法不一样,这充分说明了其权向量是一个随机过程向量,梯度噪声对其产生了一定的影响。b图给出了100次独立实验得到的平均权向量ˆ[(n)]Ew的估计,即11ˆˆ(n)(n)TttwwT,其中ˆ(n)tw是第t次独立实验中第n次迭代得到的权向量,T是独立实验次数。可以发现,多次独立实验得到的平均权向量ˆ[(n)]Ew的估计平滑了随机梯度引入的梯度噪声,十分接近理论最优权向量[0.195,0.95]Toptw,曲线足够平滑,噪声影响很小。图3中a、b两图皆有较好的收敛特性,即使1次实现也能很好的逼近最优权值。图4(a)RLS算法下单次收敛曲线图4(b)RLS算法下百次平均收敛曲线分析2:图4中,a、b两幅图分别为单次实现的RLS算法下最优权值变化过程和100次仿真实现后取平均值做的图,a图中可看出权值已有较好收敛特性,两个权值初始值由已知条件设置为0,之后收敛到两个定值:-a1=0.195和-a2=-0.95,,但是曲线不够平滑、噪声较大,b图经过取平均后噪声影响已经很小。单次实现和多次实现的联系与区别也与LMS算法基本相同。但是可以清晰地看出RLS算法收敛极。将两种算法整合于一个图中可以看出鲜明的对比。图5LMS算法和RLS算法收敛曲线对比分析3:从图5可以看出,在和一定的情况下,RLS比LMS具有更快的收敛速度。在算法的前期收敛段,RLS算法的收敛速度要明显高于LMS算法。总的来说,LMS算法的收敛性和步长有关,受协方差矩阵的特征根影响,然而RLS算法一定是收敛的,且收敛速度很快,不过其迭代过程由于要求增益因子和逆矩阵等,使得其算法复杂度高,计算量比较大。接下来修改步长μ值,观察曲线的收敛情况。图6给出了μ=0.01,μ=0.03和μ=0.06三种情况下的最优权值变化曲线,由此分析不同步长对曲线收敛性产生的影响。图6μ对LMS收敛速度的影响分析4:可以看出LMS算法中的步长参数μ决定抽头权向量在每步迭代中的更新量,是影响算法收敛速度的关键参数,其决定了LMS算法学习过程的快慢。图6展示了当收敛步长μ值变小时,其均方误差的收敛速度也相应减慢,降低对实变系统的跟踪速度,不能及时调整至最优权值。由前面的理论推导我们可以知道10max(),在这个范围内,μ越大,均方误差收敛速度越快,收敛速度和步长因子成正比。可是如果μ大于这个范围会造成不稳定,较大步长会造成较大的稳态误差,带来算法的发散。图7λ对RLS收敛速度的影响分析5:RLS算法中遗忘因子的作用是对离n时刻越近的误差加比较大的权重,而对离n时刻越远的误差加比较小的比重。遗忘因子的选择对RLS算法的性能起决定性的作用。λ是个小于等于1的数,如果λ越小,能量信号就越接近最新的误差平方,对前面的误差遗忘的越快,跟踪效果就越好。但是,递推RLS算法中的误差是由期望信号决定的,如果λ很小则误差信号对期望信号的依赖性就会很大,所以,输出信号就很接近期望信号。从图7可以看出,遗忘因子λ越小,系统的跟踪能力越强,收敛的越快(即变平稳得越快),但是收敛值比较大;λ越大,系统跟踪能力减弱,收敛时均方误差也越小,学习曲线收敛值越小。所以,我们在用普通递推RLS算法时,一定要对λ有个准确的取值,才能保证系统性能的最佳状态。总结:LMS算法其优点是结构简单,算法复杂度低,易于实现,稳定性高,便于硬件实现,但是这种算法收敛速度慢,对快速变化的信号不适合。RLS算法是基于最小二乘准则的精确方法,它的收敛速度快,稳定性强,因此常被应用于实时系统识别和快速启动的信道均衡。附件(程序代码):%(1)信号序列与高斯白噪声的产生%参数初始化a1=-0.195;%生成信号所用AR(2)滤波器的参数a2=0.95;N=2000;%信号长度%信号及白噪声信号序列的初始化x=zeros(1,N)';%信号的初始化sigmasqu=0.0965;%噪声方差sigma=sqrt(sigmasqu);%噪声标准差w=normrnd(0,sigma,N)';%高斯白噪声的初始化,均值为0,方差为0.0965x(1)=w(1);%信号前两点的初始赋值x(2)=-a1*x(1)+w(2);%信号序列的产生fori=3:Nx(i)=-a1*x(i-1)-a2*x(i-2)+w(i);%信号由AR(2)产生end%绘制信号和高斯白噪声波形figure(1)subplot(2,1,1),plot(1:N,x,'b-')axis([0,2000,-5,5])title('基于AR(2)模型产生的信号x');xlabel('信号长度n');ylabel('x(n)');subplot(2,1,2),plot(1:N,w,'r-');axis([0,2000,-5,5])title('基于AR(2)模型产生的高斯白噪声w(n)');xlabel('信号长度n');ylabel('w(n)');%%%%%%%%%%%%%%%%%%%%%%%---LMS100次叠加%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%N=2000;M=100;%计算的次数w1=zeros(N,M);w2=zeros(N,M);I1=eye(2);E1=zeros(N,M);wa1=zeros(N,1);wa2=zeros(N,1);en=zeros(N,1);fork=1:Me=zeros(1,N)';%定义误差向量%根据RLS算法进行递推x=zeros(1,N)';%信号的初始化sigmasqu=0.0965;%噪声方差sigma=sqrt(sigmasqu);%噪声标准差w=normrnd(0,sigma,N)';%高斯白噪声的初始化,均值为0,方差为0.0965x(1)=w(1);%信号前两点的初始赋值x(2)=-a1*x(1)+w(2);%信号序列的产生fori=3:Nx(i)=-a1*x(i-1)-a2*x(i-2)+w(i);%信号由AR(2)产生endL=2;%滤波器长度u=0.04;%LMS算法下自适应增益常数初始化wL=zeros(L,N);%LMS滤波器的权值初始化fori=(L+1):NX=x(i-1:-1:(i-L));y(i)=X'*wL(:,i);%i时刻输出信号e(
本文标题:自适应滤波LMS与RLS的matlab实现
链接地址:https://www.777doc.com/doc-6700098 .html