DSP大作业.docx
- 文档编号:230309
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:16
- 大小:752.61KB
DSP大作业.docx
《DSP大作业.docx》由会员分享,可在线阅读,更多相关《DSP大作业.docx(16页珍藏版)》请在冰豆网上搜索。
DSP大作业
学院:
专业:
年级:
姓名:
学号:
任课老师:
王忠*(教授)
导师姓名:
论文题目:
基于CCS软件下的自适应滤波器算法
年月日
摘要
随着DSP技术的高速发展,人们对信号处理的实时性、准确性和灵活性的要求越来越高,DSP技术在信号处理中的地位也越来越重要。
自适应滤波器是一种复杂的算法,设计它是为了在均衡信道,抵消回波,增强谱线,抑制噪声等方面有所应用。
而自适应滤波器的实现主要采用最小均方误差算法完成。
自适应算法通过调整滤波器系数来实现可以更好地跟踪信号的变化,最终实现自适应滤波
关键词:
自适应滤波器;CCS;DSP
目录
1 引言 1
2 自适应滤波器理论知识 1
2.1自适应滤波器结构 1
2.2数字滤波器部分 2
2.3自适应算法部分 2
3 在CCS中实现自适应滤波器算法 3
3.1工程建立 4
3.2算法设计与实现 6
3.3结果分析 8
4 结束语 12
5 参考文献 13
III
1引言
这学期通过框架式学习方法,深入学习了DSP课程,非常希望通过所学的知识来做一点东西。
思前想后决定在CCS软件中实现自适应滤波算法。
因为,在许多应用场和中,常常要处理一些无法预知的信号、噪声或时变信号,如果采用具有固定滤波系数的数字滤波器无法实现最优滤波。
在这种情况下,必须设计自适应滤波器,以使得滤波器的动态特性随着信号和噪声的变化而变化,以达到最优滤波效果。
自适应滤波是仅需对当前观察的数据作处理的滤波算法。
它能自动调节本身冲激响应的特性,或者说自动调节数字滤波器的系数,以适应信号变化的特性,从而达到最佳滤波。
由于自适应滤波不需要关于输入信号的先验知识,计算量小,特别适用于实时处理,近年来得到广泛应用,如用于脑电图和心电图测量、噪声抵消、扩频通信及数字电话等。
2自适应滤波器理论知识
2.1自适应滤波器结构
自适应滤波器主要由两部分组成:
系数可调的数字滤波器和用来调节或修正滤波器系数的自适应算法。
图1 自适应滤波器原理框图
在图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),表示为式
(1)。
e(n)=z(n)-y(n)=s(n)+d(n)-y(n)
(1)
显然,自适应滤波器就是一个噪声抵消器。
如果得到对淹没信号的噪声的最佳估计,就能得到所要提取信号的最佳估计。
为了得到噪声的最佳估计y(n),可以经过适当的自适应算法来反馈调整数字滤波器的系数,使得e(n)中的噪声最小。
e(n)有两种作用:
一种是得到信号s(n)的最佳估计;二是用于调整数字滤波器系数的误差信号。
2.2 数字滤波器部分
自适应滤波器的结构采用FIR横向滤波器结构,如图2所示。
图2 FIR横向滤波器结构
其中,为自适应滤波器的输入矢量是权系数矢量,即自适应滤波器的冲击响应;y(n)为自适应滤波器的输出矢量。
T为矩阵转制符,n为时间序列,N为滤波器的阶数。
2.3自适应算法部分
算法思路为:
假设给出了和原始信号相关的参考信号d(n),那么首先对FIR滤波器的权任意设定一组初始值;输入信号时x(n),然后根据滤波器的输出值y(n)与参考信号d(n)之间的误差e(n)对权值进行调节,使下一次的输出误差能有所减少;这样重复下去,直到权收敛到最佳值。
如图3
图3自适应算法框图
输入信号矢量为:
加权矢量(即滤波器抽头系数矢量)为:
相应的滤波器的输出为:
y(n)相对于期望信号d(n)的误差为:
根据最小均方误差(MSE)准则,最佳的滤波器参量Wopt应使得性能函数—均方误差为最小。
于是可得:
。
其中,μ为收敛因子,控制收敛速度和稳定性。
显然,上面的LMS算法不需要事先已知信号的统计量,而使用它们的瞬时估计代替。
LMS算法获得的权重只是一个估计值,但随着调节权重,这些估计值逐渐提高,滤波器也越来越适应信号特性。
最终,权重值收敛。
收敛条件为:
0<μ<1/λmax其中,λmax是输入数据方差矩阵的最大特征值。
在实际应用中,w(n)不会达到理论的最优点(维纳解),但会在其周围波动。
自适应步长μ是表征迭代快慢的物理量,μ越大,自适应时间越短,自适应过程越快,但引起的失调也越大,当μ大于1/λmax时,系统发散;μ越小,系统越稳定,失调越小,但自适应过程也相应加长。
3在CCS中实现自适应滤波器算法
设计的自适应滤波器,采用16阶FIR滤波器,采用相同的信号作为参考信号d(n)和输入信号x(n),并采用上一时刻的误差值来修正本时刻的滤波器系数,2μ取值0.0005或0.0003,对滤波器输出除128进行幅度限制。
3.1工程建立
1首先双击,打开CCS5.5,然后选择workspace,如图4,
图4
2创建工程将工程名设置为”FIRLMS”,如图5,图6所示,
图5
图6
3将CCS设置位软件仿真如图7
图7
4在工程里添加.cmd文件,源文件,头文件,库文件,配置文件。
并编写主函数FIRLMS.C文件,然后添加在工程中,如图8,
图8
3.2算法设计与实现
1在主函数中编写自适应滤波算法,算法的思想如下:
更新滤波器系数,其中N为滤波器的阶数。
2FIRLMS.C文件中的主函数内容如下:
#include"DSP2833x_Device.h"//DSP2833xHeaderfileIncludeFile
#include"DSP2833x_Examples.h"//DSP2833xExamplesIncludeFile
#include"f28335a.h"
#include"math.h"
#definePI3.1415926
#defineCOEFFNUMBER16//阶数
#defineINPUTNUMBER1024//采样点数
intFIRLMS(int*nx,float*nh,intnError,intnCoeffNumber);
floath[COEFFNUMBER];//FIR横向滤波器的权系数
floatfU;//fU/2是自适应步长
intxx[INPUTNUMBER];//采用相同的信号作为参考信号和输入信号
intrr[INPUTNUMBER];//自适应滤波电路的输出信号
intwc[INPUTNUMBER];//输出信号与参考信号的之间的误差信号。
main()
{
inti,nLastOutput;
nLastOutput=0;
fU=0.0003;//自适应步长是0.00015
//fU=0.0005;//自适应步长是0.00025
//fU=0.0008;//自适应步长是0.0004
for(i=0;i for(i=0;i { xx[i]=256*sin(i*2*PI/34);//对正弦波进行采样 rr[i]=wc[i]=0;//初始化为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); } //nx输入信号;nh冲激响应;error误差;ncorenumber数据缓冲区长度 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; } 3.3结果分析 运行程序: 点击Dubug,,之后,在调试窗口中进行下面步骤: 步骤1: 新建一个SingleTime0,(输入波形)如图9 图9 步骤2: 再建一个SingleTime1(输出信号),如图10 图10 步骤3: 建第三个SingleTime2(误差信号),如图11 图11 步骤4: 运行程序并观察波形 输入波形: 情况一,当自适应步长fU=0.00025时: 输出波形: 误差幅度: 情况二,当自适应步长fU=0.00015时: 输出信号是: 误差幅度: 情况三,当自适应步长fU=0.0004时: 输出信号是: 误差幅度: 由仿真结果可以看出: 1)输出波形SingleTime1在自适应滤波器的调整中逐渐与输入波形SingleTime0相重合,误差SingleTime2逐渐减小到0值附近。 2)自适应步长μ对系统的自适应时间和系统的失调有影响。 μ越大,自适应时间越短,自适应过程越快,但引起的失调也越大;μ越小,系统越稳定,失调越小,但自适应过程也相应加长。 在实验中当μ≥0.0004时系统发散。 因此自适应步长μ的选择应从整个系统的要求出发,在满足精度的前提下,尽量减少自适应时间,并且在满足系统性能要求的前提下,尽量减少滤波器的阶数。 在本实验中μ=0.00015,μ=0.00025均能满足系统性能指标,但是当μ=0.00025时系统引起的失调比μ=0.00015较大。 综合考虑以上两个因素,本次试验自适应滤波器步长的选取为μ=0.00015较合适。 4结束语 通过一个学期的学习,对于DSP原理及应用这门课有了更深刻的理解。 DSP是一门软件与硬件紧密结合的课程。 如果要学好DSP,我们不仅需要掌握DSP芯片的内部结构,存储空间分配,时钟系统,存储器与通用I/0口,中断与复位,片内外设模块;同时也需要熟练软件开发环境,汇编指令,伪/宏指令,目标文件链接,算法编程等。 在这次大作业中,我将大部分时间花费到CCS5.5软件的使用和自适应滤波器算法的编程中。 首先我查阅关于自适应滤波算法的文献,弄清楚该算法的数学思想,同时寻找采用C语言编写该算法的思路。 有了思路之后,就开始建立工程,然后在主函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 作业