《基于MATLAB的自适应滤波器设计.doc》由会员分享,可在线阅读,更多相关《基于MATLAB的自适应滤波器设计.doc(20页珍藏版)》请在三一办公上搜索。
1、 基于MATLAB的自适应滤波器设计 摘要关键词:MATLAB;自适应;滤波器Based on MATLAB auto-adapted filter design AbstractKey word: Matlab;Auto-adapted; Filter第一章 绪论 1.1 引言滤波器根据其逼近函数的形式不同, 可设计出多种滤波器. 常用的有巴特沃思滤波器、切比雪夫 型滤波器、切比雪夫 型滤波器、椭圆滤波器、巴塞尔滤波器。对于这些滤波器的设计, 都是先给定其副频特性的模平方H ( jX) 2, 再求出系统函数H (s)。设计滤波器时, 需由经典式求出滤波器的系统函数H (s) , 求出极点S
2、k (k= 1, 2, 2N ) , 给定N , Xc,E, 即可求得2N 个极点分布。然后利用归一化函数, 得出归一化的电路组件值, 即可得到满足要求的滤波器。此种设计中, 需要进行烦琐、冗长的数字计算, 这对于电路设计者来说, 不仅费时费力, 准确性不易把握, 而且不符合当今高速发展的时代要求。自适应滤波器是近30 年来发展起来的关于信号处理方法和技术的滤波器,其设计方法对滤波器的性能影响很大。自适应滤波器能够得到比较好的滤波性能,当输入信号的统计特性未知,或者输入信号的统计特性变化时,自适应滤波器能够自动地迭代调节自身的滤波器参数,以满足某种准则的要求,从而实现最优滤波。自适应滤波器一般
3、包括滤波器结构和自适应算法两个部分,这两部分不同的变化与结合,可以导出许多种不同形式的自适应滤波器。1.2 MATLAB简介Matlab是由美国MathWorks公司推出的软件产品。它是一完整的并可扩展的计算机环境, 是一种进行科学和工程计算的交互式程序语言。它的基本数据单元是不需要指定维数的矩阵, 它可直接用于表达数学的算式和技术概念, 而普通的高级语言只能对一个个具体的数据单元进行操作。在Matlab内部还配备了涉及到自动控制、信号处理、计算机仿真等种类繁多的工具箱, 所以Matlab 的应用非常广泛, 它可涉足于数值分析、控制、信号分析、通信等多种领域。1.3 自适应滤波器的应用适应滤波
4、器在信号检测、信号恢复、数字通信等许躲领域中被广泛应用,因而一直是学术界一个重要研究课题。近年来,微电子技术和超大规模集成(VLSI)电路技术的飞速发展又促进了自适应滤波技术的进步。自适应滤波技术正是由于具有对干扰频率不敏感且其权值调整是基于对系统参数的优化等特点,而越来越多地受到人们的关注。传统的自适应滤波器主要在时域中实现,采用抽头延迟线(Tapped Delay Line)结构及Widrow-Hoff自适应LMS算法。这种方法算法简单,稳健性也比较好,因而被广泛的应用。但是滤波器的阶数可能会很高,步长系数可能会很小,收敛性能不理想,对输入信号的自相关矩阵有很强的依赖性,因而不具有高自适应
5、率。当输入信号的自相关矩阵的特征值分布发散度很大时,算法的收敛速度很慢,跟踪性能不好。第二章 自适应滤波原理2.1 自适应滤波器 所谓自适应滤波,就是利用前一时刻已获得的滤波器参数等结果,自动地调节现时刻的滤波器参数,已适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。自适应滤波器由参数可调的数字滤波器(或称为自适应处理器)和自适应算法两部分组成,如图1所示:图1 自适应滤波器输入信号x(n)通过参数可调的数字滤波器后产生输出信号( 或响应)y(n),将其与参数信号(或称期望信号)d(n)进行比较,形成误差信号e(n)。e(n)(有时还要利用x(n),通过某种自适应算法对滤波器进行
6、参数调整,最终使e(n)的均方误差最小。因此,自适应滤波器实际上是一种能够自动调整本身参数的特殊维纳滤波器,在设计时不需要事先知道关于输入信号和噪声的统计特性知识,它能够在自己工作过程中逐渐了解或估计所需的统计特性,并一次为根据自动调整自己的参数,以达到最佳滤波效果。一旦输入信号统计特性发生变化,它又能跟踪这种变化,自动调整参数,使滤波器性能达到最佳。2.2 自适应算法自适应算法主要是根据滤波器输入的统计特性进行处理,他可能还与滤波器的输入及其它数据有关,据此,存在开环算法和闭环算法。开环算法的控制输出仅取决与滤波器的输入和其它输入数据;闭环的控制输出则是滤波器输出及其它输入信号的函数。闭环控
7、制利用输出反馈,它不但能在滤波器输入信号变化时保持最佳输出,且还能在某种程度上补偿滤波原件参数的变化和误差及运算误差。缺点:存在稳定性问题及收敛度不高;开环算法的优点是调整速度快,一般无稳定性问题,但通常它要求的计算量大且不能补偿组件参数误差及运算误差,所以多用闭环算法。图2 开环算法图3 闭环算法2.3 自适应滤波去噪原理一种自适应去噪滤波器原理如图1所示,信号x(k)受到宽带噪声n1(k)的污染,与噪声相关的宽带信号n2(k)是可以测量的。其中n2(k)是和n1(k)彼此相关的噪声信号,而与信号x(k)不相关。如果将n2(k)作为自适应滤波器的输入,而将x(k)作为期望输出信号,通过对输出
8、误差e(k)的控制,可以调整自适应滤波器的权系数w(k),权系数的更新使得它的输出y(k)趋于等于n1(k),则当滤波器稳定以后,自适应滤波器输出误差e(k)就是滤除了n1(k)的期望输出信号x(k)。图4 自适应去噪滤波原理图第三章 自适应滤波器的LMS算法3.1 LMS算法 最小均方算法(LMS-Least Mean Square)是一种很有用且很简单的估计梯度的方法,其突出的特点是计算量小,易于实现,且不要求脱线计算。最陡下降法每次迭代都需要知道性能曲面上某点的梯度值,而实际上梯度值只能根据观测数据进行估计,LMS算法是一种很有用且很简单的估计梯度的方法。其关键技术在于按照e(n)及各x
9、(n)值,通过某种算法,确定Ee2(n)=min时的各h*(n)值,从而自动调节各h(n)值至h*(n)值。LMS算法最核心的思想是用平方误差代替均方误差,即 1 2 将上式带如最陡下降法迭代计算权矢量的公式,得 3LMS算法的基本关系式 4 其中是收敛因子,决定了收敛速度和稳定性,满足:,是的最大特征值, 5许多学者对LMS算法进行了研究,提出了传统LMS算法的许多有效的改进措施:如采用变步长LMS算法、变换域LMS算法、QR分解LMS算法等,有效地克服了其性能局限性。为了比较直观地观察和分析各种LMS算法的收敛性能,借助MATLAB强大的工程计算和绘图功能,通过MATLAB语言编译.m文件
10、来实现各种算法的LMS滤波器,用计算机仿真,对输入信号做相应的处理,并分析仿真结果。仿真结果中收敛曲线均是采用蒙特卡罗仿真,独立运行100 次求其统计平均得到的。收敛曲线的横轴均为滤波器迭代次数。3.2 时域LMS算法传统的LMS算法具有计算量小,结构简单,易于实现等诸多优点,尤其是这种算法是最先由统计分析法导出的一种实用算法,它是一类自适应滤波器的基础。所以,详细分析时域LMS算法中个参数对算法的影响具有重要意义。下面就针对时域LMS算法各参数做一下讨论。3.2.1 步长U0仿真抽样点数为N=512,滤波器阶数K=8,单频信号为s=a*esp(i*0.05*pi*t),a=1,加入均值为零的
11、高斯白噪声后信噪比为snr=10dB。由仿真结果可看出:当U=0.2时,LMS算法不能收敛,U=0.01时,算法收敛较慢,不能跟踪输入信号的变化,而当U=0.135时,既能快速达到收敛,有较小的起始阶段误差,并达到较小的稳态误差。步长U的大小决定着算法的收敛速度和达到稳态的失调量的大小,对于常数U来说,算法的失调与自适应收敛过程是一对矛盾,要想得到较快的收敛速度可选用大的U值,这将导致较大的失调量( 如果要满足失调量的要求,则收敛过程将受到制约。这里,仿真结果与理论值相一致。下面介绍的变步长LMS算法能有效解决这一矛盾。3.2.2 阶数K。仿真抽样点数为M=512,收敛步长U=0.135单频信
12、号为s=a*esp(i*0.05*pi*t),a=1,加入均值为零的高斯白噪声,信噪比为snr=10Db,做出k=6,8,10,12时的收敛曲线。该曲线表明:对于不同的滤波器阶数可得到不同的滤波效果,当K=8时稳态误差最小,信号输出波形最好。这是因为LMS滤波器阶数K与稳态误差及输入信号特性有关,对于具体的输入信号,有一个最佳(或准最佳)的加权数目K使稳态误差最小,再增加权数目时,稳态误差有变大的可能.3.2.3 信噪比snr。仿真抽样点数为N=512,步长U=0.135单频信号为s=a*esp(i*0.05*pi*t),a=1,阶数k=8。由计算机仿真图看出,当信噪比snr升高时,LMS算法
13、性能将急剧恶化。这可由频域LMS算法来克服时域LMS算法的性能局限。3.2.4 自适应滤波由于具有对干扰频率不敏感且其权值调整是基于对系统参数的优化等特点,广泛地应用于信号检测、信号恢复、数字通信等领域。传统自适应滤波器主要在时域实现,该算法简单,稳健性能较好,因而被广泛应用。第四章 基于LMS算法的自适应滤波器的仿真及性能分析4.1 原理图原始语音采用文件“audio. wav”,噪声采用一组频率为50Hz ,500Hz 和1000Hz 的正弦信号模拟,其结构图如图4 所示。图4 语音去噪结构图4.2 自适应滤波源程序程序清单: Functiony,e=1ms(x,d,u,N,e)%y,e=
14、1ms(x,d,u,N,e)%u=2*收敛因子%w=估计的FIR滤波器%y=输出数组y(n)%x=输入数组x(n)%d=期望数组d(n),长度与x相同%u=步长%N=FIR滤波器的长度%M=length(x);Y=zeros(1,M);W=zeros(1,N)ezeros(1,M);for n=N:M; x1=s(n:-1:n-N+1); y(n)=h*x1; e(n)=d(n)-y(n);w(n)=w+u*e(n)*x1;end源程序:Function lmsmain()%主函数%XS是周期性信号%XN是干扰噪声%T=0:0.1:99.9;Xs=10*sin(0.5*t);Figure(1)
15、;Subplot(211);Plot(t,xs);grid;Ylabei(幅值);Title(it输入周期性信号);Xn=randn(1,1000);Subplot(212);Plot(t,xn);grid;Ylabel(幅值);Xlabel(时间);Title(it随即噪声信号);d=xs+xn;x=xs+xn;u=2e-3;N=10;W=0000000000;ye=lms(x,d,u,N,e);Figure(2);%subplot(313)Plot(t,d,t,y,t,e);grid;Xlabel(时间);Ylabel(幅值);4.3 波形仿真部分源程序如下:% 设置滤波器参数M = 32
16、 ;lam = 1 ;delta = 0. 1 ;w0 = zeros (M,1) ; P0 = (1/ delta) 3 eye (M,M) ;Zi = zeros (M- 1 ,1) ;%RLS 自适应滤波S = initrls (w0 ,P0 ,lam ,Zi);y ,e = adaptrls(noise ,signal ,S) ;其仿真过程中的图形如下:图5 原始语音信号的波形图6 引入噪音的波形图7 混合后的语音信号图8 混合后信号FFT的图形图9 滤波后信号FFT的图形图10 滤波前后信号的比较 由仿真过程可以看出,通过图7和图8可以清晰的看到在50 ,500 ,1000 处的尖峰
17、被滤除了。 再由图10比较可以发现除在开始时信号有很小一段延时外,在其它时间都能很好与原始语音信号重合。4.4 性能分析通过反复试验,使用Matlab 能很好的解决各种噪声混合后的语音信号去噪问题。当在现场使用时,只要保证两个麦克风同步,所拾取的语音从同一时间端点开始进行处理,就能得到清晰的语音信号。第五章 结论自适应滤波由于具有对干扰频率不敏感且其权值调整是基于对系统参数的优化等特点,广泛地应用于信号检测、信号恢复、数字通信等领域。传统自适应滤波器主要在时域实现,该算法简单,稳健性能较好,因而被广泛应用。随着人们对现代通信过程中的信号质量要求越来越高,自适应滤波器的算法越来越复杂。本文通过自
18、适应去噪滤波器的设计,为自适应滤波器的硬件实现提供了一种切实可行的实验依据。变换域自适应滤波获得了比时域自适应滤波更好的收敛性能。目前已有多种形式的正交策略,如KLT、离散Fourier变换、离散余弦变换(DCT)等。近年来又兴起了被称作“数学显微镜”的小波变换(DWT),可利用它的多分辨和时频局部化特性在不同的分辨水平上重现信号。将小波变换引入自适应滤波结构,具有小波分析优于Fourier分析的所有优点,在时变信号和快速变化信号的自适应滤波方面有着广阔的应用前景,是未来自适应滤波发展的新方向。利用Matlab 来设计要比传统设计步骤简便、直观的多. 在实际应用中, 应根据需要来选择是采用分步
19、设计, 还是采用一次性设计, 不论是哪一种, 与传统设计相比, 计算量都要减少得多。Matlab 作为一种交互式的程序语言, 在滤波的应用中有着自己独特的优点. 运用给定的信号处理工具箱函数, 编制相应的程序, 可实现各种形式的模拟、数字滤波器, 这对于信号的传输与处理有着极其重要的作用。致 谢本文的研究工作是在王融丽老师指导、帮助和督促下完成的。王融丽老师在该领域有敏锐的感知力以及对其应用价值的洞察力给我留下了深刻的印象。在攻读学士学位四年的学习期间,导师勇于探索、敢于创新的科研精神成为激励我不断努力进取,为我今后的人生旅途上取得了宝贵精神财富。同时,在学习期间导师为我提供了良好的研究环境和
20、实践条件,并对一些创新性的工作给予了大量的指导与支持。在本文完成之际,谨向为我倾注了大量心血的导师及帮助过我的老师和同学表示最诚挚的感谢和深深的敬意!参考文献1 朱民雄,闻新,黄健群,等. 计算机语音技术(修订版)M . 北京:北京航空航天大学出版社,2002.2 胡广书. 数字信号处理理论、算法与实现M . 北京:清华大学出版社,1997.3 郑南宁. 数字信号处理M . 西安:西安交通大学出版社,1991.4 Simon Haykm着,郑宝玉等译. 自适应滤波器原理(第四版) M . 北京:电子工业出版社,2003.5郑君里等. 信号与系统. 北京: 高等教育出版社, 20006程佩青. 数字信号处理教程. 北京: 清华大学出版社, 19987黄文梅等. 信号分析与处理. 长沙: 国防科技大学出版社, 20008高俊斌. Matlab 5. 0 语言与程序设计. 武汉: 华中理工大学出版社, 19999 陈怀琛. MATLAB 及在电子信息课程中的应用M . 北京:电子工业出版社,2002.10 吴湘淇. 信号、系统与信号处理M . 北京:电子工业出版社,2000.11 吴镇扬. 数字信号处理的原理与实现M . 南京:东南大学出版社,2002.