自适应滤波器课程设计Word格式文档下载.docx
《自适应滤波器课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《自适应滤波器课程设计Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
![自适应滤波器课程设计Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-2/4/2510c051-34db-4667-b448-816d6d5509c7/2510c051-34db-4667-b448-816d6d5509c71.gif)
其中,自适应滤波算法一直是人们的研究热点,包括线性自适应算法和非线性自适应算法,非线性自适应算法具有更强的信号处理能力,但计算比较复杂,实际应用最多的仍然是线性自适应滤波算法。
线性自适应滤波算法的种类很多,有LMS自适应滤波算法、R路自适应滤波算法、变换域自适应滤波算法、仿射投影算法、共扼梯度算法等[1]。
1自适应滤波器简介
自适应滤波器属于现代滤波器的范畴,自适应滤波器是相对固定滤波器而言的,固定滤波器属于经典滤波器,它滤波的频率是固定的,自适应滤波器滤波的频率则是自动适应输入信号而变化的,所以其适用范围更广。
在没有任何关于信号和噪声的先验知识的条件下,自适应滤波器利用前一时刻已获得的滤波器参数来自动调节现时刻的滤波器参数,以适应信号和噪声未知或随机变化的统计特性,从而实现最优滤波。
所谓自适应滤波,就是利用前一时刻已获得的滤波器参数等结果,自动地调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。
自适应滤波器实质上就是一种能调节其自身传输特性以达到最优化的维纳滤波器。
2自适应滤波原理
所谓的自适应滤波,就是利用前一时刻以获得的滤波器参数的结果,自动的调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。
自适应滤波器实质上就是一种能调节其自身传输特性以达到最优的维纳滤波器。
自适应滤波器不需要关于输入信号的先验知识,计算量小,特别适用于实时处理。
由于无法预先知道信号和噪声的特性或者它们是随时间变化的,仅仅用FIR和II种具有固定滤波系数的滤波器无法实现最优滤波。
在这种情况下,必须设计自适应滤波器,以跟踪信号和噪声的变化。
自适应滤波器的特性变化是由自适应算法通过调整滤波器系数来实现的。
一般而言,自适应滤波器由两部分组成,一是滤波器结构,二是调整滤波器系数的自适应算法。
自适应滤波器的结构采用FIR或IIR结构均可,由于IIR滤波器存在稳定性问题,因此一般采用FIR滤波器作为自适应滤波器的结构。
图1给出了自适应滤波器的一般结构。
图2-1自适应滤波器的一般结构
图1为自适应滤波器结构的一般形式,图中x(n)为输入信号,通过参数可调的数字滤波器后产生输出信号y(n),将输出信号y(n)与标准信号(或者为期望信号)d(n)进行比较,得到误差信号e(n)。
e(n)和x(n)通过自适应算法对滤波器的参数进行调整,调整的目的使得误差信号e(n)最小。
自适应滤波器设计中最常用的是FIR横向型结构。
图2是横向型滤波器的结构示意图。
图2-2横向型滤波器的结构示意图
其中:
x(n)为自适应滤波器的输入;
w(n)为自适应滤波器的冲激响应:
w(n)={w(O),w
(1),…,
w(N-1)};
y(n)为自适应
自适应滤波器的结构可以采用FIR或IIR滤波器存在稳定性问题,因此一般采用FIR滤波器作为自适应滤波器的结构。
自适应FIR滤波器结构又可分为3种结构类型:
横向型结构(TransversalStructure)、对称横向型结构(SymmetricTransversalStructure)以及格型结构(LatticeStruture)。
本文采用自适应滤波器设计中最常用的FIR横向型结构。
3自适应滤波算法
自适应滤波器除了包括一个按照某种结构设计的滤波器,还有一套自适应的算法。
自适应算法是根据某种判断来设计的。
自适应滤波器的算法主要是以各种判据条件作为推算基础的。
通常有两种判据条件:
最小均方误差判据和最小二乘法判据。
LMS算法是以最小均方误差为判据的最典型的算法,也是应用最广泛的一种算法。
最小均方误差(LeastMeanSquare,LMS)算法是一种易于实现、性能稳健、应用广泛的算法。
所有的滤波器系数调整算法都是设法使y(n)接近d(n),所不同的只是对于这种接近的评价标准不同。
LMS算法的目标是通过调整系数,使输出误差序列e(n)=d(n)-y(n)的均方值最小化,并且根据这个判据来修改权系数,该算法因此而得名。
误差序列的均方值又叫“均方误差”(MeanSqluareError,MSE)。
理想信号d(n)与滤波器输出y(n)之差e(n)的期望值最小,并且根据这个判据来修改权系数wi(n)。
由此产生的算法称为LMS。
均方误差ε表示为:
对于横向结构的滤波器,代入y(n)的表达式:
R=E[X(n)XT(n)]为N×
N的自相关矩阵,它是输入信号采样值间的相关性矩阵。
P=E[d(n)X(n)]为N×
1互相关矢量,代表理想信号d(n)与输入矢量的相关性。
在均方误差ε
达到最小时,得到最佳权系数:
它应满足下式:
,,
这是一个线形方程组,如果R矩阵为满秩的,R-1存在,可得到权系数的最佳值满足:
W*=R-1p。
用完整的矩阵表示为:
显然φx(m)=E[x(n)x(n-m)]为x(n)的自相关值,φxd(R)=E[x(n)d(n一k)]为x(n)与d(n)互相关值。
在有些应用中,把输入信号的采样值分成相同的一段(每段称为一帧),再求出R,P的估计值得到每帧的最佳权系数。
这种方法称为块对块自适应算法。
如语音信号的线性预测编码LPC就是把语音信号分成帧进行处理的。
R,P的计算,要求出期望值E,在现实运算中不容易实现,为此可通过下式进行估计:
用以上方法获得最佳W*的运算量很大,对于一些在线或实时应用的场合,无法满足其时间要求。
大多数场合使用迭代算法,对每次采样值就求出较佳权系数,称为采样值对采样值迭代算法。
迭代算法可以避免复杂的R-1和P的运算,又能实时求得近似解,因而切实可行。
LMS算法是以最快下降法为原则的迭代算法,即W(n+1)矢量是W(n)矢量按均方误差性能平面的负斜率大小调节相应一个增量:
W(n+1)=W(n)-μ▽(n),这个“是由系统稳定性和迭代运算收敛速度决定的自适应步长。
▽(n)为n次迭代的梯度。
对于LMS算法▽(n)为下式
即E[e2(n)]的斜率:
由上式产生了求解最佳权系数W*的两种方法,一种是最陡梯度法。
其思路为:
设计初始权系数W(0),用W(n+1)=W(n)一μ▽(n)迭代公式计算,到W(n+1)与W(n)误差小于规定范围。
其中▽(n)计算可用估计值表达式:
上式K取值应足够大。
如果用瞬时一2e(n)X(n)来代替上面对-2E[e(n)X(n)]的估计运算,就产生了另一种算法——随机梯度法,即Widrow-Hoft的LMS算法。
此时迭代公式为:
W(n+1)=W(n)+2ue(n)X(n)
以后讨论的LMS算法都是基于WidrOW-Hoff的LMS算法。
上式的迭代公式假定滤波器结构为横向结构。
对于对称横向型结构也可推出类似的迭代公式:
W(n+1)=W(n)+2ue(n)[X(n)+X(n一N+1)]
4自适应滤波算法的理论仿真与DSP实现
4.1MATLAB仿真
4.1.1MATLAB程序仿真
使用MATLAB编程,采用自适应滤波器技术实现语音去噪过程,程序如下:
clearall;
clf;
pi=3.14;
signal=sin(2*pi*0.055*[0:
999]'
);
%产生输入信号
noise=randn(1,1000);
%产生随机噪声
nfilt=fir1(11,0.4);
%产生11阶低通滤波,截止频率为0.4
fnoise=filter(nfilt,1,noise);
%噪声信号进行FIR滤波
d=signal.'
+fnoise;
%将噪声叠加到信号中
w0=nfilt.'
-0.01;
%设置初始化滤波器系数
mu=0.05;
%设置算法的步长
s=initse(w0,mu);
%初始化自适应FIR结构滤波
[y,e,s]=adaptse(noise,d,s);
%进行自适应滤波
t=1:
200;
plot(t,signal(1:
200))
figure
(2);
plot(t,d(1:
200),'
.-'
t,y(1:
-'
4.1.2仿真结果
(1)为了确保噪声的相关性,首先让噪声通过一个11阶的低通FIR滤波器然后将滤波后的噪声加到信号中去;
(2)对程序中所使用的一些函数的详细说明,请参考MATLAB的函数说明,这些函数包括:
FIR、INITSE、FILTER、PLOT、ADAPTSE等。
图4-1为原始信号的信号图;
图4-2为滤波前信号和滤波后信号时域图。
比较图4-1和图4-2可以看出,采用自适应滤波后的滤波输出信号和原始信号基本相似,噪声完全滤除。
图4-1原始信号时域图
图4-2滤波前信号和滤波后信号时域图
对比图4-2中滤波前和滤波后的信号可以看出,信号中的噪声完全滤除,信号完全恢复,通过Matlab仿真结果分析,自适应滤波器具有很好的性能。
4.2DSP的理论基础
数字信号处理(DSP)是指人们利用计算机或专用处理设备,以数字的形式对信号进行采集,变换,滤波,估值,增强,压缩,识别等处理,以得到符合人们需要的信号形式。
其框图如图4-3所示。
DSP内部一般都包含多个处理单元,如算术逻辑运算单元,辅助寄存器运算单元,累加器等。
另外DSP芯片也有很多种,这里着重介绍TMS320C5000系列。
目前TMS320C5000系列芯片包括了TMS320C54XX和TMS320C55XX两大类。
这两类芯片的软件互相兼容。
但是本文选择TMS320C55XX系列DSP芯片。
1.结构特点比较
(1)TMS320C54XX和TMS320C55XX均为16bit定点DSP
(2)C55XX有双MAC单元;
C54XX只有单MAC单元。
(3)C55XX的指令长度可变,且没有排队的限制;
C54X的指令长度固定。
(4)C55XX有12组总线;
C54XX只有8组总线。
(5)C55XX提供了EMIF外部存储器扩展接口,可以直接使用SDRAM,而C54XX则不能直接使用。
2.内部结构对比
(1)C54XX关注于低功耗,而C55XX则将低功耗提高到一个新水平:
300MHZ的C55XX和120MHZ的C54XX相比,性能提高了5倍,而功耗则降到1/6。
(2)C55XX总线的宽度为32bit,而C54XX总线宽度为16bit。
C55XX有三组数据读总线和两组数据写总线,而C54XX有两组数据读总线和一组数据写总线。
(3)C55XX包含一个40bit的ALU。
用户可以用ALU作32bit的运算。
C54XX包含一个分开40bit的ALU。
它的ALU可以做成两个16bit的配置。
(4)C55XX可以执行可变长度的指令,这和C54XX有显著的不同。
C54XX的指令长度为固定的16bit,而C55XX的指令长度则为8~48bit。
3.寻址模式对比
C54XX支持单数据存储器操作数寻址和32bit操作数寻址,还使用并行指令支持双数据存储器操作数寻址。
它也提供立即数寻址,循环寻址和位倒序寻址。
在C54XX的基础上,C55XX还支持绝对值寻址,寄存器间接寻址,直接寻址。
C55XX的ADFU包括专门的寄存器,支持使用间接寻址指令的循环寻址。
可以同时使用5个独立的循环缓冲器和3个独立的缓冲器长度。
这些循环缓冲器没有地址排队的限制。
4.3自适应滤波算法的DSP实现
为了提高LMS算法的处理速度及减小系统的硬件规模,在实现滤波器算法时,采用了TMS320C54xx作为核心芯片。
由于该处理器采用改进型结构,具有高度并行性,同时拥有高度集成的指令系统,简化编程过程,模块化结构程序设计增强了程序的可移植性。
利用TMS320C54xx实现LMS自适应算法时,存储器中数据的存放形式对DSP的有效运用有着特殊的意义,合理的存放形式,可以使算法实现起来更加快速和高效,为了实现算法中输入样值x(n)和滤波器系数W(n)的对应项相乘,他们在存储器中的存放形式如图4-4所示。
图4-4TMS320C54xx自适应滤波器存储器组织形式
根据算法和DSP汇编语言程序(见附录),在CCS环境下编译,连接生成公共目标代码文件,在线下载到DSP中运行。
为了能观察到相应的波形,在CCS环境下选择View\Graph\Time\Freqency进入图形观察窗口,在“GraphPropertyDialog”窗口中选定相应类型的值。
将编译产生的可执行文件下载到DSP芯片中,经过运行得到图4-5为输入信号的时域图,由图可以看到,正弦信号中叠加了噪声,导致正弦信号出现了较大的畸变。
通过对输入信号进行FFT变换,可以得到其频谱图如图4-6,由图4-6可以看出,低频的信号中叠加了比较多的高频噪声,要得到比较好的原始低频正弦信号,必须要进行滤波。
图4-5输入波形
图4-6输入波形FFT
如图4-7所示,可以看出输入波形中的高频噪声基本上得到了滤除,为了更方便,更直接的看出滤波效果,对滤波后的波形进行了FFT变换,得出信号的频谱图如图4-8所示。
图4-8的输出信号的频谱图中仅剩余了低频信号,滤除了高频成分。
通过对比图4-6和图4-8,更清楚地看到高频区的噪声基本上被消除了。
但是由于参数设置不够精确等原因造成高频噪声得不到完全消除,但也很明显的显现了低通滤波的目的。
图4-7输出波形
图4-8滤波后波形FFT
5结语
自适应滤波器是比较有意思的一个课程设计,当它真的做出来的时候,还是有点成就感的。
在此次课程设计中遇到了很多的问题,这是平时上课的时候所不会遇到的,当遇到问题是,我和我的其他两个组员通过网上查阅有关自适应滤波器的知识、问身边的同学、问指导老师等渠道把遇到的问题都解决了,在这之中,我学到了很多知识。
自适应滤波器却能很好地消除叠加在信号上的噪声,虽然也可以用固定滤波器来实现,但设计固定滤波器时需要预先知道信号和噪声的统计特性,而自适应滤波器则不需要,并且当信号和噪声的统计特性发生变化时,自适应滤波器也能自动地调节其冲激响应特性来适应新的情况,因此,自适应滤波器具有更加广阔的应用前景。
自适应滤波技术的核心问题是自适应算法的性能问题,研究自适应算法是自适应滤波器的一个关键内容,算法的特性直接影响滤波器的效果。
通过本课程设计加深了对DSP原理的理解,初步掌握了DSP芯片的开发应用,为接下来的深入学习打下了坚实的基础。
但是同时还有很多的问题还有待于进一步深入研究,我将在今后的学习工作中,要加强学习,不断进取。
在做课程设计的日子里得到了何海浪老师的悉心指导和同学的帮助,在此向他们致以诚挚的谢意。
感谢提供相关技术帮助的老师和同学,你们的支持和鼓励使我对这次的设计完成有了信心和动力,我在此深表谢意。
参考文献
[1]胡广书.数字信号处理-理论、算法与实现[M].清华大学,2004.
[2]彭启琼,李玉柏.DSP技术[M].第4版.电子科技大学,2002.
[3]邓重一.滤波器的过去、现在与未来[J].中国电子报社,2003,17(4):
513~523.
[4]张雄伟(等).DSP芯片的原理与开发应用[M].第四版.北京:
电子工业出版社.2008.
[5]高西全(等).数字信号处理[M].第三版.西安电子科技大学出版社.2008.
附录自适应滤波子程序
DATA_SIZE.set256;
FILTER.set10;
STACK_SIZE.set256;
STACK.usect“stack”,STACK_SIZE
SYSTEM_STACK.setSTACK_SIZE+STACK
DATA_DP.usect“filter_vars”,0
filter.usect“filter_vars”,FILTER*2
outputdata.usect“filter_vars”,DATA_SIZE
errrordata.usect“filter_vars”,DATA_SIZE
.defstart
.data
.globalinputdata
Inputdata
.word10408,16451,10820,12227,18146,13106,11485
.word15737,9840,3644,8171,4118,-4355,-624
.word-2443,-11575,-10290,-8288,-16156,-16663,-10543
.word-15433,-17113,-8010,-11188,-11286,-3102,-2176
.word-3726,4075,8836,3665,10937,16347,11278
.word13449,19214,13116,11330,16515,10916,4581
.word7920,4852,-3773,-1259,-2437,-12459,-10499
.word-8657,-16091,-15654,-11133,-15864,-17015,-8342
.word-10862,-11228,-2376,-1394,-3423,4160,7802
.word5087,10683,16178,11318,12040,18459,13601
.word10019,16146,10320,4708,9071,3873,-4214
.word-704,-3586,-11606,-9998,-8837,-17008,-16095
.word-10402,-15357,-16675,-8536,-11140,-11943,-2908
.word-1887,-4719,5099,7887,5169,10683,16744
.word-10076,-8626,-17231,-15279,-10646,-16684,-17179
.word-7936,-10141,-11216,-2285,-903,-3720,5052
.word7833,3880,10946,16387,10515,12519,18743
.word12257,10662,16038,10388,3906,9196,4417
.word-4219,-912,-2419,-11865,-11209,-9233,-16353
.word-15469,-10824,-15744,-17280,-9320,-10469,-11427
.word-2313,-875,-4650,4739,8016,4821,9834
.word15507,10613,12142,18944,12333,11383,15673
.word10308,4892,8156,4732,-4849,-955,-2853
.word-11303,-11279,-9263,-16185,-15864,-9999,-16150
.word-16554,-8656,-10620,-12215,-2220,-836,-3474
.word4939,9086,4804,10259,15884,10219,12041
.word18582,13394,10321,15635,10087,4313,8034
.word5145,-4469,-908,-2155,-12436,-11063,-8792
.word-16193,-16849,-10633,-15990,-16297,-8395,-10178
.word-11597,-2151,-600,-3487,3862,9267,5004
.word9600,15632,10160,13017,18309,13654,9879
.word15890,9795,4551,8900,4029,-4107,-1672
.word-3324,-11575,-9976,-8166,-17320,-15900,-10976
.word-15948,-15898,-8530,-10618,-11542,-2163,-1343
.word-4333,5094,8127,4794
.globalreferdata
Referdata
.word10408,16451,10820,12227,18146,13106
.word15737,9840,3644,4118,-4355,-624
.word11122,12021,18500