-1-基于MATLAB的自适应滤波器研究摘要:本文主要介绍了自适应滤波器的基本理论思想,具体阐述了自适应滤波器的基本原理、算法及设计方法。首先介绍了自适应滤波器的基本原理,然后引入了LMS(Leastmeansquares)算法,这种算法实现简单且对信号统计特性变化具有稳健性,所以获得了极为广泛的应用,最后采用Matlab工具对基于LMS算法的自适应滤波器进行了仿真,仿真结果表明,该滤波器滤波效果较好。关键词:自适应滤波器LMS算法MATLABSimulateofadaptivefilterbasedonMATLABAbstract:Thispaperintroducesthebasictheoryofadaptivefilteridea,specifically,theadaptivefiltertherationale,algorithmanddesignmethods.Firstitintroducethebasicprincipleofadaptivefilter,thenitintroducetheLMS(Leastmeansquares)algorithm.Asthealgorithmisrealizedsimplyandhasstabilitywithrespecttothechangeofsignalstatisticalcharacteristics,LMSalgorithmisusedwidely.Finally,TheadaptivefilterwhichisbasedonLMSalgorithmissimulatedbyMATLAB.Resultsofsimulationshowthatthefilterhasaneffectivewaytofiltersingle.Keywords:AdaptiveFilterLMSalgorithmMatlab1引言由Widrow等人提出的自适应滤波理论,是在维纳滤波、卡尔曼滤波等线性滤波基础上发展起来的一种最佳滤波方法。由于它具有更强的适应性和更优的滤波性能,从而广泛应用于通信、系统辨识、回波消除、自适应谱线增强、自适应信道均衡、语音线性预测和自适应天线阵等诸多领域[1]。本文结合一个具体例子,使用LMS算法对自适应滤波器的参数进行选择和调整,从而使其达到最佳的滤波效果。2自适应滤波器基本原理-2-自适应滤波器由参数可调的数字滤波器和自适应算法两部分组成,本文分别采用横向滤波器和LMS算法,如图1所示。图1自适应滤波原理图自适应滤波器能自动调节其本身的单位脉冲响应h(n)特性,以达到最佳的滤波效果。在设计自适应滤波器时,可以不必要求预先知道信号与噪声的自相关函数,而且在滤波过程中,如果信号与噪声的自相关函数即使随时间缓慢变化,系统也能自动适应,自动调节参数,使均方误差最小。如图1所示,自适应滤波可分为2个步骤,第一步,输入信号x(n)通过横向滤波器后得到输出信号y(n),再把y(n)与期望信号d(n)进行比较得到估计误差e(n);第二步,通过一种自适应算法(LMS算法)和x(n)与e(n)的值来调节横向滤波器的权向量w,使之达到最佳滤波效果。3LMS算法LMS算法的基本思想:调整滤波器的参数,使滤波器的输出信号与期望-3-信号之间的均方误差最小,这样系统输出为有用信号的最佳估计。如果自参数选择不当,就会达不到应有的滤波效果,而且还可能得到适得其反的效果,因此参数的选择对滤波效果格外重要,LMS算法结构框图,如图2所示。图2LMS算法结构框图LMS算法公式推导如下:滤波器的输入信号为:1......xTnxnxnxnL权向量为:01......wTLnwnwnwn估计误差:()()TTxwwxendnyndnnndnnn(1)公式(1)中d(n)为期望信号,y(n)被称为d(n)的估计在自适应信号处理中,通过对权向量的设计,使y(n)尽量逼近d(n),或者使e(n)达到最小。误差信号均方值:2nEen(2)由公式(1)和公式(2)得:均方误差性能曲面的梯度:-4-ˆˆ22xwwnennnenenn(3)最陡下降算法,即“下一时刻”权向量w(n+1)应该等于“现时刻”权向量加上一个负均方误差梯度-的比例项,即:1wwnnn(4)公式(4)中为步长因子,为控制稳定性和收敛速度的参数由公式(3)和公式(4)得:12wwxnnenn(5)为了方便起见,仿真时采用:w(n+1)=w(n)+e(n)x(n)(6)其中e(n)x(n)表示的是对n时刻权向量的修正量。3MATLAB仿真及结果分析设计一个二阶自适应横向滤波器,对一正弦信号加噪声信号进行滤波。为了实现该功能,得先生成一个标准正弦波信号s(n)和一个随机噪声信号n(n),然后将这两者相加就得到了加噪后的正弦信号x(n),再依照由LMS算法推导出来的公式(6)设计自适应滤波算法,对噪声干扰信号进行滤波,最后得到滤波后的信号e(n)。仿真时,迭代次数设为10000,权向量的初始值设为w=[0,0.5],步长因子分别选用0.000026,0.00026,0.26和1,查看其滤波效果。µ=0.000026,滤波效果如图3所示:-5-图3µ取0.000026时的滤波效果图当µ取0.000026时,滤波结果几乎呈直线,而且线条很粗,说明寻找权向量的速度过慢。µ=0.00026,滤波效果如图4所示:图4µ取0.00026时的滤波效果图-6-当µ取0.00026时得到的滤波效果较好,前面一段时间比较模糊是因为滤波器的参数还没有调整到最佳,当t取0.5时,就已经找到了最佳权向量。µ=0.026,滤波效果如图5所示:图5µ取0.26时的滤波效果图当µ取0.26时,结果也是呈直线状,而且线条很细,有的地方还有毛刺,说明系统参数变化太快,系统还没有调整到最佳权向量。µ=1,滤波效果如图6所示:-7-图6µ取1时的滤波效果图当µ取1时,系统输出混乱。通过滤波效果的对比,选取合适的参数µ=0.00026,然后再改变权向量w(n)的初始值,经仿真发现当初始值W(n)=[0,1]时,达到了最佳的滤波效果,如图7所示,其程序代码见附录。图7W(n)=[0,1]上述仿真结果表明:选用不同的µ值得到的滤波效果是不同的,当μ偏大时,自适应时间越短,自适应过程越快,但它引起的失调也越大,所以导致滤波结果很模糊,输出信号变化较大,当μ大于某个值时,系统输出混乱;μ偏小时,系统比较稳定,输出信号变化小,失调也小,但自适应过程却相应加长了,因此参数μ的选择应从整个系统要求出发,在满足精度要求-8-的前提下,尽量减少自适应时间。3结束语自适应滤波器具有很好适应性和优越的滤波性能,从而被广泛地应用于各个方面。由于LMS算法结构简单,计算量小,易于实现实时处理,因此自适应滤波器通常使用LMS算法。在使用LMS算法的过程中,如果自适应滤波器参数选择不当,就达不到很好的滤波效果,可见参数选择的重要性,本文通过选取不同的µ值以及改变权向量的初始值从而实现最佳的滤波效果,同时也验证了自适应滤波器优越的滤波性能。参考文献[1]何子述,夏威.现代数字信号处理及其应用[M].北京:清华大学出版社,2009.[2]叶华,吴伯修.变步长自适应滤波算法的研究[J].电子学报,1990,18(4):63-69.[3]刘保柱.MATLAB7.0从入门到精通[M].北京:北京航空航天大学出版社,2010.[4]吴轶刚,范猛.自适应滤波器参数选择和仿真结果[J].吉林工学院学报,2001,22(2):25-29.[5]刘影,南敬昌.基于LMS算法的自适应滤波器仿真实现[J].现代电子技术,2008,31(19):74-76.-9-附录cleart=0:1/10000:1-0.0001;%设置迭代次数s=sin(2*pi*t);%标准正弦信号n=randn(size(t));%与时间t等长随机信号x=s+n;%加噪信号w=[0,1];%初始2阶加权系数u=0.00026;%最佳参数fori=1:9999;%自适应算法y(i+1)=n(i:i+1)*w';e(i+1)=x(i+1)-y(i+1);w=w+2*u*e(i+1)*n(i:i+1);end;%画图程序figure(1)subplot(4,1,1)plot(t,n);title('Noisesignal');xlabel('t');ylabel('n(t)');subplot(4,1,2)plot(t,s);title('Sinusoidalsignal');xlabel('t');ylabel('s(t)');subplot(4,1,3)plot(t,x);title('Sinusoidalsignalwithnoise');xlabel('t');ylabel('x(t)');subplot(4,1,4)plot(t,e);title('theresultoffiltering');xlabel('t');ylabel('e(t)');