DSP课程设计自适应滤波器.docx
- 文档编号:9871398
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:27
- 大小:322.50KB
DSP课程设计自适应滤波器.docx
《DSP课程设计自适应滤波器.docx》由会员分享,可在线阅读,更多相关《DSP课程设计自适应滤波器.docx(27页珍藏版)》请在冰豆网上搜索。
DSP课程设计自适应滤波器
《数字信号处理》课程设计
_自适应滤波器设计与实现
系别计算机科学系
专业通信工程
班级
学号
组次
姓名
指导教师
评定成绩
起止日期年月日至年月日
摘要:
自适应滤波器是统计信号处理的一个重要组成部分。
在实际应用中,由于没有充足的信息来设计固定系数的数字滤波器,或者设计规则会在滤波器正常运行时改变,因此我们需要研究自适应滤波器。
凡是需要处理未知统计环境下运算结果所产生的信号或需要处理非平稳信号时,自适应滤波器可以提供一种吸引人的解决方法,而且其性能通常远优于用常方法设计的固定滤波器。
此外,自适应滤波器还能提供非自适应方法所不可能提供的新的信号处理能力。
本文从自适应滤波器研究的意义入手,介绍了自适应滤波器的基本理论思想,具体阐述了自适应滤波器的基本原理、算法及设计方法。
自适应滤波器的算法是整个系统的核心。
本文中,对两种最基本的自适应算法,即最小均方误差(LMS)算法和递归最小二乘(RLS)算法进行了详细的介绍和分析,并针对两种算法的优缺点进行了详细的比较。
同时,分别对FIR结构和IIR结构自适应滤波器做了详细的介绍,比较了FIR结构和IIR结构自适应滤波器的优缺点。
最终采用改进的LMS算法设计FIR结构自适应滤波器,并采用MATLAB进行仿真,最后用DSP实现了自适应滤波器。
实验结果表明,该自适应滤波器滤波效果优越。
第一章课程设计的目的和要求
1.1目的
对自适应滤波算法的研究是当今自适应信号处理中最为活跃的研究课题之一。
Windrow等于1967年提出的自适应滤波系统的参数能自动的调整而达到最优状况,而且在设计时,只需要很少的或根本不需要任何关于信号与噪声的先验统计知识。
自适应滤波器本身有一个重要的自适应算法,这个算法可以根据输入、输出及原参量信号按照一定准则修改滤波参量,以使它本身能有效的跟踪外部环境的变化。
因此,自适应数字系统具有很强的自学习、自跟踪能力和算法的简单易实现性。
自适应滤波技术的核心问题是自适应算法的性能问题,提出的自适应算法主要有最小均方(LMS)算法、递归最小二乘(RLS)算法及相应的改进算法如:
归一化(NLMS)算法、变步长(SVSLMS)算法、递归最小二乘方格形(RLSL)算法等。
这些算法各有特点,适用于不同的场合。
比如用于系统辨识、回波消除、自适应谱线增强、自适应信道均衡、语音线性预测、自适应天线阵等诸多领域。
自适应滤波,对发展通信业务有着不可或缺的作用。
所以是我们通信专业学习的重点。
也是巩固《数字信号处理》知识的一个重要的实验。
1.2要求
本文设计自适应滤波要求使用DSP实现自适应滤波器,要求掌握自适应滤波器的原理和实现方法。
因为自适应滤波器的设计用到了自适应算法和FIR滤波算法。
而自适应滤波算法有LMS算法和RLS算法,本文只用LMS算法。
LMS算法是通过对未知系统传递函数的建模,识别该未知系统,并对该系统进行噪声滤波。
自适应滤波器,其权系数可以根据自适应算法来不断修改,使得系统中的冲激响应满足给定的性能。
例如语音信号的ADPCM编码,采用线性预测自适应就可以实现误差信号与输入信号的线性无关,并由此作为依据,不断调节滤波器的权系数,最终使得误差信号趋近于0,使得该滤波器完全适应该输入信号;同样,只要输入信号出现变换,自适应滤波器根据误差信号的变化再次调整其权系数,从而跟上信号的变化。
自适应滤波器设计的算法采用的是自适应算法,即LMS算法。
LMS算法是通过对未知系统传递函数的建模,识别该未知系统,并对该系统进行噪声滤波。
第二章自适应滤波器功能介绍及总体设计方案
2.1功能:
自适应滤波器可以利用前一时刻以获得的滤波器参数的结果,自动的调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。
2.2总体设计方案:
自适应滤波器主要由两部分组成:
系数可调的数字滤波器和用来调节或修正滤波器系数的自适应算法。
如下图所示:
自适应滤波器的一般形式如图1所示I5],图中输入信号X(N)加权到数字滤波器产生输出信号Y(N),自适应算法调节滤波器权系数使输出Y(N)和滤波器期望的响应F(n)之间的误差信号E(N)为最小。
自适应滤波器的系数受误差信号的控制,根据E(N)的值和自适应算法自动调整。
一旦输入信号的统计规律发生了变化,滤波器能够自动跟踪输入信号的变化,自动调整滤波器的权系数,实现自适应过程,最终达到滤波效果。
第三章主要内容和步骤
3.1自适应滤波原理
自适应滤波器主要由两部分组成:
系数可调的数字滤波器和用来调节或修正滤波器系数的自适应算法。
下图为自适应滤波器原理框图:
图中,自适应滤波器有两个输入端:
一个输入端的信号Z(n)含有所要提取的信号s(n),被淹没在噪声d(n)中,s(n).d(n)两者不相关,z(n)=s(n)+d(n)。
另一输入端信号为x(n),它是z(n)的一种度量,并以某种方式与噪声d(n)有关。
x(n)被数字滤波器所处理得到噪声d(n)的估计值y(n),这样就可以从z(n)中减去y(n),得到所要提取的信号s(n)的估计值e(n),表示为:
e(n)=z(n)-y(n)=s(n)+d(n)-y(n)。
显然,自适应滤波器就是一个噪声抵消器。
如果得到对淹没信号的噪声的最佳估计,就能得到所要提取的信号的最佳估计。
为了得到噪声的最佳估计y(n),可以经过适当的自适应算法,例如用LMS(最小均方)算法来反馈调整数字滤波器的系数,使得e(n)中的噪声最小。
e(n)有两种作用:
一是得到信号s(n)的最佳估计;二是用于调整滤波器系数的误差信号。
自适应滤波器中,数字滤波器的滤波系数是可调的,多数采用FIR型数字滤波器,设其单位脉冲响应为h(0),h
(1),…,h(N-1),你们它在时刻n的输出便可写成如下的卷积形式
y(n)=∑h(k)x(n-k)
为方便起见,上式中的各h(k)亦被称为权值。
根据要求,输出y(n)和目标号d(n)之间
应满足最小均方误差条件,即
E[e2(n)]=E{[d(n)-y(n)]2}(2-2)
有最小值,其中e(n)表示误差。
令
аE[e2(n)]/аh(k)=0(2-3)
并把式(2—2)代入,便得正交条件:
E[e(n)x(n-k)]=0,0≤k≤N-1(2-4)
如果令
h=hT(0,1,2,...,N-1),x(n)=xT(n,n-1,...,n-N-1)
那么式(2-1)便可被写成
y(n)=xT(n)h=hTx(n)(2-5)
而由式(2-4)给出的正交条件则变为:
E{[d(n)-y(n)]x(n)}=0
把式(2-5)代入上式后,有
E[d(n)x(n)]=E[x(n)xT(n)]h(2-6)
如果令:
r=E[d(n)x(n)],Фxx=E[x(n)xT(n)],那么最佳权向量
h*=Фxx-1r(2-7)
第四章详细设计过程
4.1LMS自适应算法
自适应算法是根据某种判断来设计的。
通常有两种判据条件:
最小均方误差判据和最小二乘法判据。
LMS算法是以最小均方误差为判据的最典型的算法,也是应用最广泛的一种算法。
最小均方误差(LeastMeanSquare,LMS)算法是一种易于实现、性能稳健、应用广泛的算法。
所有的滤波器系数调整算法都是设法使Y(N)接近F(N),所不同的只是对于这种接近的评价标准不同。
LMS算法的目标是通过调整系数,使输出误差序列
的均方值最小化,并且根据这个判据来修改权系数,该算法因此而得名。
误差序列的均方值又叫“均方误差”(MeanSqluareError,MSE)。
理想信号
与滤波器输出
之差
的期望值最小,并且根据这个判据来修改权系数
。
由此产生的算法称为LMS。
均方误差ε表示为:
(2-3)
对于横向结构的滤波器,代入
的表达式:
(2-4)
其中:
为
的自相关矩阵,它是输入信号采样值间的相关性矩阵。
为
互相关矢量,代表理想信号
与输入矢量的相关性。
在均方误差
。
达到最小时,得到最佳权系数:
(2-5)
它应满足下式:
(2-6)
这是一个线形方程组,如果
矩阵为满秩的,
存在,可得到权系数的最佳值满足:
(2-7)
用完整的矩阵表示为:
(2-8)
显然
为
的自相关值
为
与
互相关值。
在有些应用中,把输入信号的采样值分成相同的一段(每段称为一帧),再求出R,P的估计值得到每帧的最佳权系数。
这种方法称为块对块自适应算法。
如语音信号的线性预测编码LPC就是把语音信号分成帧进行处理的。
R,P的计算,要求出期望值E,在现实运算中不容易实现,为此可通过下式进行估计:
(2-9)
(2-10)
用以上方法获得最佳W*的运算量很大,对于一些在线或实时应用的场合,无法满足其时间要求。
大多数场合使用迭代算法,对每次采样值就求出较佳权系数,称为采样值对采样值迭代算法。
迭代算法可以避免复杂的R-1和P的运算,又能实时求得近似解,因而切实可行。
LMS算法是以最快下降法为原则的迭代算法,即W(n+1)矢量是W(n)矢量按均方误差性能平面的负斜率大小调节相应一个增量:
W(n+1)=W(n)-μ▽(n),这个“是由系统稳定性和迭代运算收敛速度决定的自适应步长。
▽(n)为n次迭代的梯度。
对于LMS算法▽(n)为下式
即E[e2(n)]的斜率:
(2-11)
由上式产生了求解最佳权系数W*的两种方法,一种是最陡梯度法。
其思路为:
设计初始权系数W(0),用W(n+1)=W(n)一μ▽(n)迭代公式计算,到W(n+1)与W(n)误差小于规定范围。
其中▽(n)计算可用估计值表达式:
(2-12)
上式K取值应足够大。
如果用瞬时一2e(n)X(n)来代替上面对-2E[e(n)X(n)]的估计运算,就产生了另一种算法——随机梯度法,即Widrow-Hoft的LMS算法。
此时迭代公式为:
(2-13)
滤波器结构为横向结构。
对于对称横向型结构也可推出类似的迭代公式:
4.2FIR滤波器设计
设h(n),n=0,i.2…N-l为滤波器的冲激响应,输人信号为x(n),则FIR滤波器就是要实现下列差分方程:
式中,y(n)为输出信号,即经过滤波之后的信号;N为滤波器阶数。
FIR滤波器的最主要特点是没有反馈回路,因此是无条件稳定系统,其单位脉冲响应h(n)是一个有限长序列。
由式
(1)可见,FIR滤波算法实际上是一种乘法累加运算。
不断地输入样本x(n),经延时(z-1)做乘法累加,再输出滤波结果Y(n)对式
(1)进行z变换.整理后可得FIR滤波器的传递函数为:
。
FIR滤波器的一般结构如图l所示。
其中,X(n)=[x(n),x(n-1),…,x(n-N+1)]为自适应滤波器的输入矢量;W(n)=[w0
(1),w1(n),…,wn-1(n)]T为系统的权系数矢量;为时间序列;N为滤波器的阶数;T为矩转置符。
由表达式可以看出输出是两矢量的内积。
4.3自适应滤波器MATLAB实现
4.3.1FIR滤波算法MATLAB仿真实现
MATLAB信号处理工具箱提供了基于窗函数法的FIR滤波器的设计函数fir1。
fir1是采用经典窗函数法设计线性相位FIR数字滤波器,且具有标准低通、带通、高通和带阻等类型
。
语法格式:
B=fir1(n,
)
B=fir1(n,
’ftype’)
B=fir1(n,
window)
B=fir1(n,
’ftype’,window)
其中,n为FIR滤波器的阶数,对于高通、带阻滤波器n取偶数。
为滤波器截止频率,取值范围为0~1。
对于带通、带阻滤波器,
=[
,
],且
<
。
’ftype’为滤波器类型。
缺省时为低通或带通滤波器,为‘high’时是高通滤波器,为‘stop’时是带阻滤波器。
Window为窗函数,列向量,其长度为n+1;缺省时,自动取hamming窗。
输出参数B为FIR滤波器系数向量,长度为n+1。
4.3.2自适应滤波MATLAB仿真实现
使用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:
200),'-');
4.3.3仿真结果
图4-1原始信号时域图
图4-2滤波前和滤波后信号时域图
4.4自适应滤波器DSP设计实现
4.4.1DSP理论基础
数字信号处理(DSP)是指人们利用计算机或专用处理设备,以数字的形式对信号进行采集,变换,滤波,估值,增强,压缩,识别等处理,以得到符合人们需要的信号形式。
其框图如图3-1所示。
图4-1数字信号处理简化框图
这里我们用DSP来做自适应滤波器。
为了提高LMS算法的处理速度及减小系统的硬件规模,在实现滤波器算法时,采用了TMS320C54xx作为核心芯片。
由于该处理器采用改进型结构,具有高度并行性,同时拥有高度集成的指令系统,简化编程过程,模块化结构程序设计增强了程序的可移植性。
利用TMS320C54xx实现LMS自适应算法时,存储器中数据的存放形式对DSP的有效运用有着特殊的意义,合理的存放形式,可以使算法实现起来更加快速和高效,为了实现算法中输入样值x(n)和滤波器系数W(n)的对应项相乘,他们在存储器中的存放形式如图4-2所示。
图4-2TMS320C54xx自适应滤波器存储器组织形式
根据算法在CSS软件中建立工程编写C语言程序代码。
在CSS环境下编译和下载到DSP试验箱中。
进行一些列相应的设置后实现自适应滤波。
4.4.2程序设计
实验中采用的自适应滤波器采用16阶FIR滤波器,采用相同的信号作为参考d(n)和输入信号x(n),并采用上一时刻的误差值来修正本时刻的滤波器系数,2μ取值0.0005,对滤波器输出除128进行幅度限制。
实验流程图如下:
程序设计的整个实现过程主要分为3个步:
(1)滤波运算前的相关运算单元、寄存器以及变量的初始化;
原始信号xx[i]=256*sin(i*2*PI/34);
(2)根据输入的采样值计算滤波器的输出并求出误差;
这一步是最重要的滤波计算,我们用FIRLMS(int*nx,float*nh,intnError,intnCoeffNumber)这个函数来实现。
其完整代码是
intFIRLMS(int*nx,float*nh,intnError,intnCoeffNumber)
{
inti,r;
floatfWork;
r=0;
for(i=0;i { fWork=nx[i]*nError*fU; nh[i]+=fWork; r+=(nx[i-i]*nh[i]); } r/=128; returnr; } 收敛因子fU=0.0005。 nError是上一次的误差值,fWork是当前的滤波器权系数,输出值r。 这里实现自适应算法中 的公式。 输出值y(n)等于输入值x(n-1)*w(i)的积分。 ½½½ (3)根据LMS算法的迭代公式更新滤波器参数,有新的采样输入后转到第二步循环执行。 把一信号进行采样。 把采样点放在数字中。 这里用到了输入信号数组xx[],输出信号数组rr[],误差数组wc[],以及滤波器权系数h[]。 通过for循环语句进行一个一个样点值滤波计算。 得到想要的结果。 for(i=COEFFNUMBER+1;i { nLastOutput=FIRLMS(xx+i,h,nLastOutput-xx[i-1],COEFFNUMBER); rr[i]=nLastOutput; wc[i]=rr[i]-xx[i]; } 用FIRLMS函数得到了一个滤波后的样点信号值nLastOutput存放在输出信号数组rr[]中。 for循环一个一个得到滤波过的信号值第INPUTNUMBER=1024个为止。 第五章实验过程 5.1实验过程中出现的错误及解决的办法 5.2CCS程序运行后的各种输出结果 1.实验准备 -启动软件仿真模式 -启动CCS 2.打开工程 3.编译并下载程序 4.点击运行按钮 5.打开观察窗口(view->Graph->Property....) 设置如下 图5-1设置输入信号XX 图5-2设置输出信号rr 图5-3设置误差wc 7.观察结果 8.退出CCS 5.2DSP实现结果 观察得结果的波形如下: 图5-4输出信号原始波形 图5-5滤波后输出信号的波形 图5-6自适应误差e(n)波形 第六章结论与体会 本课程设计的重点是自适应FIR滤波器的设计和DSP的实现。 对线性自适应滤波器的算法作了大量调查和研究,详细比较了FIR结构滤波器和IIR结构滤波器,并结合硬件设计考虑,最终采用FIR横向结构滤波器。 自适应滤波技术的核心问题是自适应算法的性能问题,研究自适应算法是自适应滤波器的一个关键内容,算法的特性直接影响滤波器的效果。 介绍了两种基本的自适应算法: 最小均方(LMS)算法及递归最小二乘(RLS)算法,在DSP上实现了对含噪信号的频率跟踪。 在实际中,自适应滤波器的应用比较复杂,包括维纳滤波和卡尔曼滤波都是基于改变参数的滤波方法,修改参数的原则一般采用均方最小原则,修改参数的目的就是使得误差信号尽量接近于0。 传统的滤波方法总是设计较精确的参数,尽量精确地对信号进行处理,传统滤波方法适用于稳定的信号,而自适应滤波器可以根据信号随时修改滤波参数,达到动态跟踪的效果。 通过本课程设计加深了对DSP原理的理解,初步掌握了DSP芯片的开发应用,为接下来的深入学习打下了坚实的基础。 但是同时还有很多的问题还有待于进一步深入研究,我将在今后的学习工作中,要加强学习,不断进取。 参考文献 [1]西蒙赫金.自适应滤波器原理.北京: 电子工业出版社,2003 [2]陈怀琛,吴大正,高西全.MATLAB及在电子信息课程中的应用(第2版)[M].北京: 电子工业出版社,2004 [3]高西全,丁玉美.数字信号处理(第三版)[M].西安: 西安电子科技大学出版社,2008 [4]刘顺兰,吴杰.数字信号处理(第二版)[M].西安: 西安电子科技大学出版社,2008 [5]吴湘淇.信号、系统与信号处理(上、下)[M].北京: 电子工业出版社,2000 [6]张志勇.精通MATLAB6.5[M].北京: 北京航空航天大学出版社,2003 [7]门爱东,杨波,全子一.数字信号处理[M].北京: 人民邮电出版社,2003 [8]吴湘淇.信号与系统(第3版)[M].北京: 电子工业出版社,2009 [9]吴湘淇,肖熙,郝晓莉.信号、系统与信号处理的软硬件实现[M].北京: 电子工业出版社,2002 [10]万建伟,王玲.信号处理仿真技术[M].长沙: 国防科技大学出版社,2008 [11]JohnG.Proakis,DimitrisG.Manolakis.数字信号处理[M].方艳梅,刘永清译.北京: 电子工业出版社,2007 [12]SanjitKMitra.数字信号处理实验指导书[M].孙洪等译.北京: 电子工业出版社,2006 附件源程序清单: /****************************************************************************** Main()主函数。 ******************************************************************************/ ///////////////////////////////////////////////// //ExampleForICETEK-VC5416-EDU// //CTRVersion: V4// //Filename: FirLms.c// //Project: FirLms.pjt// //Version: 2.00// //Writeby: DanielHawk// //Company: RealtimedspCo.Ltd.// //// //AllRightsopened&noOnus2005.06// ///////////////////////////////////////////////// #include"math.h" #definePI3.1415926 #defineCOEFFNUMBER16 #defineINPUTNUMBER1024 intFIRLMS(int*nx,float*nh,intnError,intnCoeffNumber); floath[COEFFNUMBER],fU; intxx[INPUTNUMBER],rr[INPUTNUMBER],wc[INPUTNUMBER]; main() { inti,nLastOutput; nLastOutput=0; fU=0.0005; for(i=0;i for(i=0;i { xx[i]=256*sin(i*2*PI/34); rr[i]=wc[i]=0; } for(i=COEFFNUMBER+1;i { nLastOutput=FIRLMS(xx+i,h,nLastOutput-xx[i-1],COEFFNUMBER);//breakpoint rr[i]=nLastOutput; wc[i]=rr[i]-xx[i]; } exit(0); } intFIRLMS(int*nx,float*nh,intnError,intnCoeffNumber) { inti,r; floatfWork; r=0; for(i=0;i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 课程设计 自适应 滤波器