自适应滤波算法原理与应用自适应滤波算法原理与应用经典的滤波算法包括,维纳滤波,卡尔曼滤波,自适应滤波。维纳滤波与卡尔曼滤波能够满足一些工程问题的需求,得到较好的滤波效果。但是他们也存在局限性,对于维纳滤波来说,需要得到足够多的数据样本时,才能获得较为准确的自相关函数估计值,一旦系统设计完毕,滤波器的长度就不能再改变,这难以满足信号处理的实时性要求;对于卡尔曼滤波,需要提前对信号的噪声功率进行估计,参数估计的准确性直接影响到滤波的效果。在实际的信号处理中,如果系统参数能够随着输入信号的变化进行自动调整,不需要提前估计信号与噪声的参数,实现对信号的自适应滤波,这样的系统就是自适应滤波系统。1.基本自适应滤波算法自适应滤波算法的基本思想是根据输入信号的特性自适应调整滤波器的系数,实现最优滤波。图1自适应滤波结构框图若自适应滤波的阶数为M,滤波器系数为W,输入信号序列为X,则输出为:10()()()Mmynwmxnm(1)()()()endnyn(2)其中()dn为期望信号,()en为误差信号。101()()()MMjiijmiynwmxnmywx(3)令TT01112[,,,],[,,,]MjjjNjLL(4)则滤波器的输出可以写成矩阵形式:TTjjjyXWWX(5)TTjjjjjjjedydXWdWX(6)定义代价函数:自适应滤波算法原理与应用222()[][()][()]jjjTjjJjEeEdyEdWX(7)当使上式中的代价函数取到最小值时,认为实现最优滤波,这样的自适应滤波成为最小均方自适应滤波(LMS)。对于最小均方自适应滤波,需要确定使得均方误差最小的滤波器系数,一般使用梯度下降法求解这类问题。滤波器系数向量的迭代公式为:11()2jjjWWJ(8)式中,为步长因子,jJ为代价函数的梯度。(9)因为瞬时梯度2jjXe为真实梯度值的无偏估计,实际应用中可使用瞬时梯度代替真实梯度,即有:2()2TjjjjjjJXdWXXe(10)1jjjjWWeX(11)通过逐步迭代,即可得到最优的滤波器系数,实现对输入信号的自适应滤波。2.自适应滤波的工程应用为了比较不同滤波算法的滤波效果,这里仍然采用前面用到的二维圆周运动轨迹追踪的问题作为工程背景。自适应滤波算法的程序设计思路如图2所示。生成观测信号初始化滤波系数与步长计算误差更新滤波系数得到滤波结果误差满足标准输出滤波信号NY图2自适应滤波算法流程图迭代步长0.2时,得到的滤波结果为:自适应滤波算法原理与应用图3X方向自适应滤波结果-基本自适应滤波0.2图4Y方向自适应滤波结果-基本自适应滤波0.2从X与Y方向上的位移变化曲线与方差变化曲线上可以看出,滤波结果出现了发现,最终得到的结果并没有达到最优解。分析其原因,可能是迭代步长太大,将迭代步长减小之后,取0.1,得到较为理想的滤波结果,示于图5和6.图5X方向自适应滤波结果-基本自适应滤波0.1自适应滤波算法原理与应用图6Y方向自适应滤波结果-基本自适应滤波0.1可以看出,减小步长因子之后,两个方向上的滤波轨迹与期望的轨迹之间的误差明显减小,证明了自适应滤波的有效性。3.自适应滤波的收敛性分析在上一节的讨论中,迭代步长选择对于算法的收敛性具有决定性作用,步长值的微小改变即可对算法的收敛效果产生明显影响,因此如何确定合适的步长值是自适应滤波算法中重要的内容。222TTT2TT[][()][]2[(][]=[]2jjjjjjjjjdxxxEeEdyEdEdXWWEXXWEdRWWRW(12)22jxxdxRWR(13)系统的最小均方误差最小时,有:0j则下式成立:1optxxdxWRR(14)对于滤波器系数的迭代过程,有:1[][][][][()][][()](I)[]jjjjTjjjjjdxxxjxxjxxoptEWEWEeXEWEdWXXEWERRWREWRW(15)对自相关矩阵进行分解,即:HxxRQQ(16)则相邻两次迭代过程的滤波器系数之间满足关系式:自适应滤波算法原理与应用10[]()[]()[]HHjoptjoptjHoptQEWWIQEWWIQEWW(17)10[]()()jHjoptoptEWWQIQWW(18)当迭代次数为无穷大时,理论上可以实现最优滤波,即迭代步长应该满足:lim[]0|1|11,2,,jijIΛiNL(19)从而有:max01/(20)式20即为确保算法收敛迭代步长应满足的条件。得到步长的收敛性条件,即可在满足要求的范围内调整步长因子,选择最佳的步长,在确保算法收敛的前提下,提高收敛速度。对于二维轨迹追踪问题,取步长因子为max0.6,得到的滤波结果如图7至9所示。图7X方向自适应滤波结果-基本自适应滤波max0.6图8Y方向自适应滤波结果-基本自适应滤波max0.6自适应滤波算法原理与应用图9二维圆周运动轨迹滤波结果-基本自适应滤波max0.6从X方向,Y方向上的滤波结果可以看出,滤波轨迹在起初的一段时间内与期望轨迹存在较大的误差,但随着迭代次数增加,两者的误差逐渐减小,最终得到误差的最小值。二维轨迹图上也能得到类似的结论。4.变步长自适应滤波在满足收敛性条件的要求下选择迭代步长,可以确保最终得到收敛的结果,但是这一步长在整个过程中是固定的。然而,更为理想的情况是在滤波的初始阶段,误差值很大时,迭代步长可以取较大的值,以取得较快的收敛速度,随着误差减小,逐渐接近最优目标时,迭代步长也相应减小,从而得到较好的收敛精度,这就是变步长自适应滤波算法。变步长的自适应滤波算法已经有了较长时间的发展,前人发展了很多有效的变步长算法,这里仅选择两种常用的方法。(1)归一化变步长自适应滤波算法jTjjXX1jjjjjWWeX其中,为常数,且满足02,0。归一化的变步长滤波算法使用输入信号的能量对步长因子进行归一化,确保其取到合适的值。(2)Sigmod函数变步长自适应滤波算法2(1e)jej其中,为常数,且满足max0,0。Sigmod函数使用滤波器的输出误差对迭代步长进行控制,从表达式中可以看出,自适应滤波算法原理与应用误差较大时,步长因子的值较大,误差减小时,步长因子的值也会相应减小。生成观测信号初始化滤波系数计算误差更新滤波系数得到滤波结果误差满足标准输出滤波信号NY更新步长图10变步长自适应滤波算法程序设计流程图采用变步长的自适应滤波算法对二维圆周运动的轨迹进行追踪,滤波结果示于图11至13。其中参数1.2,2。图11X方向自适应滤波结果-变步长自适应滤波自适应滤波算法原理与应用图12Y方向自适应滤波结果-变步长自适应滤波图13二维圆周运动轨迹滤波结果-变步长自适应滤波从X方向与Y方向上的滤波曲线可以看出,变步长的自适应滤波输出结果与期望信号之间的误差更小,固定步长时起始阶段的大幅度波动也消失了,对运动轨迹的追踪效果也更好。5.解相关自适应滤波当输入信号之间具有较强的相关性时,自适应滤波的效果并不理想,因此改进自适应滤波算法的一个方法就是消除相邻输入信号序列的相关性,称为解相关自适应滤波。解相关自适应滤波算法的实现过程为:111TjjTjjXXrXX1jjjZXrXjjTjjeZX自适应滤波算法原理与应用1jjjjWWZ该算法通过求解相邻两个输入信号序列的相关系数,在当前输入信号中减去与上一输入信号的相关部分,作为当前的输入信号,实现解相关的自适应滤波。图14给出了解相关自适应滤波算法的程序设计流程。生成观测信号初始化滤波系数计算误差更新滤波系数得到滤波结果误差满足标准输出滤波信号NY计算相关系数,更新步长图14解相关自适应滤波算法流程图将该算法应用于二维圆周运动的轨迹追踪问题,所得结果示于图15至17。图15X方向自适应滤波结果-解相关自适应滤波自适应滤波算法原理与应用图16Y方向自适应滤波结果-解相关自适应滤波图17二维圆周运动轨迹滤波结果-解相关自适应滤波图15,16,17显示了应用解相关自适应滤波算法对二维圆周运动轨迹进行滤波后的结果。X与Y方向上的信号均与期望信号符合的很好,并且最小均方误差的变化曲线也呈现较快的收敛趋势。在二维轨迹图上,滤波轨迹的波动性大大降低,仅在初始阶段存在轻微的波动,但总体上取得了理想的滤波结果,能够满足实际应用的需求。6.变换域自适应滤波从解相关自适应滤波算法结果看出,如果能够消除输入信号的相关性,自适应滤波的效果将得到极大的改进,在此基础上,有发展出了变换域的自适应滤波算法。其基本思想是使用一组正交基,将时域信号变换到对应的变换域上,则在变换域上,信号的相关性就会降低,对信号进行归一化后,自相关矩阵特征值的分散度就会降价,从而提高算法的收敛性。基本的变换包括频率域变换,余弦变换,小波变换,分数阶Fourier变换。(1)基于频域的自适应滤波将输入信号和期望信号分别形成N点数据块,然后做N点离散Fourier变换,权系数每N个样点更新一次。对信号进行变换与反变换时,可以利用快速Fourier自适应滤波算法原理与应用正变换与逆变换算法,能够有效提高运算速度。(2)基于余弦变换域的自适应滤波算法余弦变换能够较好地近似理想正交变换,基于余弦变换域的LMS自适应滤波算法不仅减小了输入信号的自相关程度,明显提高了收敛速度,减小了权失调噪声,而且该算法的计算量也大大减小。(3)基于小波变换域的自适应滤波算法对自适应滤波器的输入信号进行正交变换,利用小波的时频局部特性,将输入向量正交分解到多尺度空间。减小了自适应滤波器输入向量自相关阵的谱动态范围,大大增加了算法的收敛步长,提高了收敛速度和稳定性。(4)基于分数阶Fourier域的自适应滤波算法分数阶Fourier变换是一种时频分析工具和旋转算子,信号在分数Fourier域上的表示同时融合了信号在时域和频域的信息。基于分数阶傅里叶变换域的自适应滤波利用前一时刻已获得的滤波器参数等结果,自动调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。生成观测信号数据分块变换至变换域变换至时域得到滤波结果误差满足标准输出滤波信号NY更新步长与滤波器系数图18变换域自适应滤波算法流程图参考文献参考文献[1]李方伟,张浩.一种新的变步长LMS自适应滤波算法及其仿真[J].重庆邮电大学学报(自然科学版),2009,(05):591-594.[2]齐林,周丽晓.变换域自适应滤波算法的研究[J].郑州大学学报(理学版),2007,(01):61-66.[3]冯存前,张永顺.变步长频域快速自适应收发隔离算法研究[J].电子对抗技术,2004,(05):22-25+45.[4]DehertyJ,PorayathR.Arobustechocancelerforacousticenvironments.IEEETrans.CircuitsandSystems,II,1997,44:389-398.[5]张贤达.现代信号处理(第三版).北京:清华大学出版社,2015.[6]高西全,丁玉美.数字信号处理-时域离散随机信号处理.西安:西安电子科技大学出版社,2002.参考文献代码:自适应滤波算法:%该程序实现对二维圆周运动轨迹的自适应滤波%该程序为主函数,调用不同的子函数实现不同的滤波方法%子函数1:fun_fplms_filter2-固定步长自适应滤波%子函数2:fun_cplms_filter2-变步长自适应滤波%子函数3:fun_lms_filter_der2-解相关自适应滤波clearcloseallN=2000;theta=linspace(0,2*pi,N);%极坐标参数e_x=cos(theta);%x,y方向上的