使用NUTTALLWIN设计的FIR滤波器.doc

上传人:仙人指路1688 文档编号:4141328 上传时间:2023-04-07 格式:DOC 页数:18 大小:217.50KB
返回 下载 相关 举报
使用NUTTALLWIN设计的FIR滤波器.doc_第1页
第1页 / 共18页
使用NUTTALLWIN设计的FIR滤波器.doc_第2页
第2页 / 共18页
使用NUTTALLWIN设计的FIR滤波器.doc_第3页
第3页 / 共18页
使用NUTTALLWIN设计的FIR滤波器.doc_第4页
第4页 / 共18页
使用NUTTALLWIN设计的FIR滤波器.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《使用NUTTALLWIN设计的FIR滤波器.doc》由会员分享,可在线阅读,更多相关《使用NUTTALLWIN设计的FIR滤波器.doc(18页珍藏版)》请在三一办公上搜索。

1、基于TI C6713的拉弦音乐滤波去噪-使用NUTTALLWIN设计的FIR滤波器指导老师:高明摘 要 本课程设计采用NUTTALLWIN设计一个FIR滤波器,对一段加噪拉弦音乐信号进行滤波去噪处理并根据滤波前后的波形和频谱分析滤波性能。本课程设计仿真平台为CCS3.1,开发工具是C语言、M语言编程。首先从网上下载一段拉弦乐器音乐信号,用格式转换器转换成WAV格式,用电脑录音机截取其中一段作为信号源,并人为加入一单频噪声,最后比较滤波前后的波形和频谱并进行分析。由分析结果可知,滤波器后的语音信号与原始信号基本一致,即设计的FIR滤波器能够去除信号中所加单频噪声,达到了设计目的。关键词 滤波去噪

2、;FIR滤波器;NUTTALLWIN;CCS3.11 引 言本课程设计主要内容是从网上下载一段拉弦器演奏音乐信号,进行加噪并利用NUTTALLWIN窗设计满足指标的FIR滤波器进行去噪处理,比较滤波前后语音信号的波形及频谱,画出滤波前后的波形及频谱图。通过比较波形及频谱图得出滤波前后的信号相差无几,可见滤波器在信号处理中占据中重要的地位,利用它我们可以得出我们需要的信号,而不需要的,即对我们需要的有用信号造成影响甚至失真的噪声我们可以通过滤波器滤掉。因此,我们必须掌握滤波去噪这门重要的技术。1.1 课程设计目的本课程设计的主要目的是采用NUTTALLWIN窗设计一FIR滤波器,对拉弦器演奏音乐

3、信号进行加噪并用所设计的FIR滤波器进行去噪处理,并且通过设计熟悉CCS3.1的使用,了解FIR滤波器的特性,根据结果和在课堂上的学到的知识得出结论,学会将理论知识应用与实践之中。通过本次课程设计,我们应该掌握滤波去噪这门在信号处理中重要的技术。1.2 课程设计的要求(1)滤波器指标必须符合工程实际。(2)设计完后应检查其频率响应曲线是否满足指标。(3)处理结果和分析结论应该一致,而且应符合理论。(4)独立完成课程设计并按要求编写课程设计报告书。1.3 设计平台本次课程设计中系统的开发平台为CCS3.1,程序运行平台为Windows XP。CCS是TI公司推出的用于开发DSP芯片的集成开发环境

4、,它采用Windows风格界面,集编辑、编译、链接、软件仿真、硬件调试以及实时跟踪等功能于一体,极大地方便了DSP芯片的开发与设计,是目前使用最为广泛的DSP开发软件之一。 一、CCS的简介 CCS是一种针对TMS320系列DSP的集成开发环境,在Windows操作系统下,采用图形接口界面,提供环境配置、源文件编辑、程序调试、跟踪和分析等工具。 CCS有两种工作模式:1、软件仿真器模式:可以脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。2、硬件在线编程模式:可以实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序。本次实验主要采用软件仿真器模式

5、1。2 设计原理 有限冲击响应 (FIR)滤波器在数字信号处理系统中有着广泛的应用。FIR滤波器设计方法主要分为两类:第一类是最优设计法,第二类是基于逼近理想滤波器特性的方法,包括窗函数法,频率采样法和等波纹最佳逼近法。而其中最常见的设计法就是窗口法设计。窗口法设计的基本思想是对于给定的滤波器技术要求,选择滤波器长度M和具有最窄主瓣宽度和尽可能最小的旁瓣衰减的某个窗函数W(n)2。2.1 FIR滤波器数字滤波器是数字信号处理重要的一个内容。一般来说,一个数字滤波器分3个步骤来完成:1、 技术要求:在设计滤波器之前,必须要有某些技术要求。这些技术要求是由用途决定的。2、 近似:一旦技术要求确定之

6、后,就要用自己学过的各种概念和数学提供一种滤波器的表述,它接近于所给出的一组技术要求。3、 实现:上面一步的结果是一个滤波器的表述,它可能是一个差分方程的形式,或者是某一系统函数H(z),或者是某一脉冲响应h(n)。依据这个表述要用硬件实现这个滤波器,或者在一台计算机上通过软件实现2。相对于IIR滤波器,FIR滤波器在保证幅度特性满足技术要求的同时,还能做到严格线性相位特性。我们知道,无失真传输与滤波处理的条件是,在信号的有效频谱范围内系统幅频响应为常数,相频响应为频率的线性函数(即具有线性相位)3。在数字通信和图像传输与处理等应用场合都要求滤波器具有线性相位特性。另外,FIR滤波器是全零点滤

7、波器,硬件和软件实现结构简单,不用考虑稳定性问题。所以,FIR滤波器是一种很重要的滤波器,在数字信号处理领域得到广泛应用。FIR滤波器的特点:(1)单位抽样响应h(n)是有限长的,因此FIR 滤波器一定是稳定的除此之外,还可用DFT实现。(2)经延时,h(n)总可变成因果序列,所以FIR 滤波器总可以由因果系统实现。(3)FIR的系统函数是z-1的多项式,故IIR的方法不适用。(4)FIR的相位特性可以是线性的,因此,它有更广泛的应用。2.2 窗口设计法 窗口法设计的基本思想是对于给定的滤波器技术要求,选择滤波器长度M和具有最窄主瓣宽度和尽可能最小的旁瓣衰减的某个窗函数W(n)。 基本概念(1

8、)窗谱:窗函数的频响的幅度函数亦称作窗谱。(2)对窗函数要求:希望窗谱主瓣尽量窄,以获得较陡的过渡带,这是因为过渡带等于主瓣宽度。尽量减少窗谱最大旁瓣的相对幅度,这样可使肩峰和波纹减少,就可以增大阻带的衰减。数字信号处理的主要数学工具是傅里叶变换而傅里叶变换是研究整个时间域和频率域的关系。不过,当运用计算机实现工程测试信号处理时,不可能对无限长的信号进行测量和运算,而是取其有限的时间片段进行分析。做法是从信号中截取一个时间片段,然后用观察的信号时间片段进行周期延拓处理,得到虚拟的无限长的信号,然后就可以对信号进行傅里叶变换、相关分析等数学处理。无线长的信号被截断以后,其频谱发生了畸变,原来集中

9、在f(0)处的能量被分散到两个较宽的频带中去了(这种现象称之为频谱能量泄漏)。为了减少频谱能量泄漏,可采用不同的截取函数对信号进行截断,截断函数称为窗函数,简称为窗。4信号截断以后产生的能量泄漏现象是必然的,因为窗函数w(t)是一个频带无限的函数,所以即使原信号x(t)是限带宽信号,而在截断以后也必然成为无限带宽的函数,即信号在频域的能量与分布被扩展了。又从采样定理可知,无论采样频率多高,只要信号一经截断,就不可避免地引起混叠,因此信号截断必然导致一些误差。泄漏与窗函数频谱的两侧旁瓣有关,如果两侧瓣的高度趋于零,而使能量相对集中在主瓣,就可以较为接近于真实的频谱,为此,在时间域中可采用不同的窗

10、函数来截断信号。5我们知道,用窗函数法设计的滤波器性能取决于窗函数的类型及窗口长度N的取值。设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N 。各种类型的窗函数可达到的阻带最小衰减和过渡带宽度见表2-1。表2-1 常见窗函数性能表名称滤波器过渡带宽最小阻带衰减名称滤波器过渡带宽最小阻带衰减矩形1.8/M21dBPARZENWIN6.6/M56db巴特利特6.1/M25dBFLATTOPWIN19.6/M108db汉宁6.2/M44dBGAUSSWIN5.8/M60db汉明6.6/M51dBBARTHANNWIN3.6/M40db布莱克曼11/M74dBBLAC

11、KMANHARRIS16.1/M109dbBOHMANWIN5.8/M51.5dbCHEBWIN15.2/M113dbNUTTALLWIN15.4/M108dbTUKEYWIN2.4/M22db 3设计步骤3.1 设计流程图 设计的流程主要有信号的采集并加入噪声,然后用NUTTALLWIN窗设计滤波器,检测滤波器性能后对加噪信号进行滤波处理,然后对滤波前后的信号进行对比分析,得出结论。 具体设计流程图如下:图3-1 设计流程图3.2 CCS系统配置以及仿真音乐波形的仿真:(1)进入CCS系统配置启动CCS配置程序。双击桌面上的Setup CCS快捷图标,弹出对话框。添加TMS 320C6713

12、芯片型号。图3-2 CCS配置窗口(2)在Matlab中将M文件生成.dat文件打开Matlab软件,将音乐和音乐的wav2dat.M文件拷入Matlab的work文件夹下,在Matlab中打开wav2dat.M文件,运行即可生成input.dat文件。wav2dat.M文件的程序如下:y,Fs,bits = wavread(kongshanniaoyu.wav);y1=y(:,1);y1=y1+1;y1=y1*100;fid=fopen(input.dat,w);fprintf(fid,1651 1 0 1 0n);fprintf(fid,0x%xn,round(y1);fclose(fid

13、); 4、 CCS编译、调试、运行利用CCS创建一个新工程,然后向该工程中添加源代码文件和库文件。1) CCS的安装目录为c:ti,首先在文件夹c:timyprojects下建立一个新的文件夹。命名为xty。2) 将主函数main.c与input.dat文件拷贝到该新建的文件夹中。3) 向工程中添加文件:在CCS中选择菜单Project Add Files to Project,并在文件类型选框中选汇编源文件(*.a*, *.s*),将main.c添加到Source文件夹、rts6700.lib添加到Libraries文件夹、c6x.h添加到Documents文件夹中。4) 打开main.c主

14、函数,选择软件窗口上的。CCS重新编译,并链接工程中的全部文件。编译过程信息显示在CCS下部的窗口中。5) 在主函数中添加断点与指针:编译完主函数后,单击x_in = (short) (dat & 0xffff);语句,选择(添加断点),选择(添加指针)。6) 在默认情况下,将当前工程目录下的debug子目录中生成.out文件。通过CCS工具条可改变生成文件的存放位置。7) 选FileLoad Program,并在对话框中选刚刚编译生成的文件xty.out,单击Open打开。8) 从File菜单选择File I/O。File I/O对话框出现以便选择输入、输出文件。如下图所示,添加文件并修改参

15、数。图3.3 File I/O窗口的参数设计(9)显示时域图形:选菜单View Graph Time/Frequency。在Graph Property对话框中,Start Address为in,Acquisition Buffer Size 为512,Display Data Size为512,DSP Data Type为 32-bit floating point,Autoscale为 Off,Maximum Y-value为200。音乐波形的时域图就能绘出来了。(10)显示频域域图形:选菜单View Graph Time/Frequency。在Graph Property对话框中,Dis

16、play Type选为FFTmagniftude,Maximum Y-value为5000。音乐波形的频域图就能绘出来了。图3.4 时域波形图的绘图窗口(4) 仿真结果经过上面的仿真后,可以得到下面的原始音乐的时域波形图以及频域波形图图3.5 原始音乐时域波形图 图3.6 原始音乐频域波形图加噪音乐波形的仿真:将加噪的M文件用Matlab生成input.dat,噪声为幅度为1、频率为4200的正弦波,放入CCS3.1进行调试、编译,绘出加噪的音乐的时域与频域波形图。图3.7 加噪音乐时域波形图图 3.8 加噪音乐频域波形图去噪音乐波形的仿真:将去噪的将加噪的M文件用Matlab生成input.

17、dat与fir.h文件,将fir.h文件加入CCS3.1的Documents,绘出文件的输入与输出波形,得到下图输出音乐波形。图3.9 去噪音乐时域波形图图 3.10 去噪音乐时域波形图去噪的音乐波形与加噪前的波形相比,去噪后的波和加噪前的波形基本相同,滤波成功。3.3 滤波器设计 滤波器性能指标: fpd=2000;fsd=2050;fsu=2150;fpu=2200;Rp=1;As=40;采用NUTTALLWIN窗设计滤波器。 NUTTALLWIN窗的参数为:s=108db;B=15.4/M。 采用NUTTALLWIN窗设计滤波器程序如下:fpd=2000;fsd=2050;fsu=215

18、0;fpu=2200;Rp=1;As=40; % 带阻滤波器设计指标fcd=(fpd+fsd)/2;fcu=(fpu+fsu)/2;df=min(fsd-fpd),(fpu-fsu); % 计算上下边带中心频率,和频率间隔 wcd=fcd/fs*2*pi;wcu=fcu/fs*2*pi;dw=df/fs*2*pi; % 将Hz为单位的模拟频率换算为rad为单位的数字频率 wsd=fsd/fs*2*pi;wsu=fsu/fs*2*pi; M=ceil(15.4*pi/dw)+1; % 计算汉宁窗设计该滤波器时需要的阶数 n=0:M-1; % 定义时间范围 w_ham=NUTTALLWIN(M);

19、 hd_bs=ideal_lp(wcd,M)+ideal_lp(pi,M)-ideal_lp(wcu,M); % 调用自编函数计算理想带阻滤波器的脉冲响应 h_bs=w_ham.*hd_bs; % 用窗口法计算实际滤波器脉冲响应 db,mag,pha,grd,w=freqz_m(h_bs,1); % 调用自编函数计算滤波器的频率特性;然后用绘图命令分别画出窗口法设计出来的滤波器的幅度响应和脉冲响应如图3-3所示:图3.11 3.5 结果分析通过滤波后可听到已经没有尖锐的单频啸叫声,再通过对滤波前后语音信号的波形及频谱比较分析可以知道该NUTTALLWIN窗FIRDF达到了滤波的效果,滤波后滤除

20、了噪声信号还原了原来的语音信号“空山鸟语”。完成了设计指标。4出现的问题及解决方法在做课程设计的过程中还是遇到了不少的问题,主要由于学校教材上面虽有几种常见的窗函数设计FIRDF,但没有关于NUTTALLWIN窗的说明,具体操作起来还是有些生疏。所以做之前先上网查了有关NUTTALLWIN窗方面的知识。这无形之中就比别的同学多了工作量。4.1出现的问题(1) 在画滤波器幅响应图红线的时候,由于取值范围大了而不能得出正确结果;(2) 在滤波处理的时候,单频噪声部分噪声频率设置的为2200,但滤波器参数设置部分最高带阻为2200。 4.2 解决的方法(1)缩小取值范围,最后的出正确结果;(2)把噪

21、声信号改到2100。 在本次课程设计中还遇到了很多小问题,就比如因为不熟悉仿真平台,对学过的知识应用不够熟练,所以很多问题就要请教老师和去翻看教材看,虽然这样浪费了很多时间,但是最后还是把问题解决了,自己也从请教老师和翻看教材过程中巩固了自己以前学的知识,除此之外也学到了很多新的知识。5 结束语每一次的课程设计总会有许多的收获,无论是之前的数字信号处理还是通信原理的课程设计,我都能在各种挑战中有所成长。而当我拿到这个课程设计的题目时,在我有些感叹这个题目很难时,也高兴有了一个更进一步的机会。其中所遭遇的种种困难,让我对于我们的专业,有了更深的理解,明白了以后要走的路的艰辛。这次课程设计的顺利完

22、成,不得不去感谢在这段旅程中给予我帮助的同学和老师。在和同学激烈的探讨中,我获得了新鲜的想法,获得了不断的鼓励,获得了完成设计的自信。而在这段新的挑战旅程中,我真的很感谢我的老师。感谢老师给了我无私的指导。我想,要是没有这些陪我一起走过,为我加油的同学老师们,我不会那么顺利地完成这次的设计。在整个课程设计的过程当中,不仅使我学到了许多知识,也培养了我独立解决问题的能力,加深了我对专业知识的了解,树立了我对自己独立完成任务的信心,大大提高了我的动手动脑能力,收集整理资料的能力。我相信对以后的工作会有很大的帮助,会提高自己对待事物的分析解决能力,思考问题的角度也会更全面。当然,这次的收获不仅仅是完

23、成任务后满满的成就感,还有需要更加努力学习实践的动力。在这次的设计课程观中,我深刻地发现了自己在知识和实践方面仍有许多的不足。把理论知识放到实践中完全是另外一回事,单单掌握理论知识是远远不够的。实践需要的不仅仅是知识,还需要迁移能力,动手能力,与人合作的能力等等。所以我也希望学校能够多提供更多的实践机会,这才能让我们获得真正的提高。实践不仅仅是检验真理的唯一标准,也是提高实践能力的途径,发现问题解决问题的途径。 虽然课程设计的任务已经顺利完成,但是这是一个不成熟的作品,其中必然包含着许许多多的问题。其中的不足之处还希望老师能谅解并给予指正。我真诚地期待老师给予的建议。参考文献1张威 MATLA

24、B基础与编程入门 西安:西安电子科技大学出版社,20072 维纳K 英格尔,约翰 G 普罗克斯 数字信号处理(MATLAB版)西安:西安交通大学出版社,20073 樊昌信,曹丽娜 通信原理(第6版)北京:国防工业出版社, 20064 程佩青.数字信号处理教程.北京:清华大学出版社,20075 吴大正.信号与线性系统分析.北京:高等教育出版社.2008附录1:语音信号采集源程序%程序名称:拉弦音乐信号的采集%程序功能:实现语音信号的采集,并且画出音频信号的时域和频域图%程序作者: %最后修改日期:2012-2-29x,fs,bits=wavread(C:Documents and Setting

25、sAdministrator桌面246-张韶-空山鸟语) % 输入参数为文件的全路径和文件名,输出的第一个参数是每个样本的值,fs是生成该波形文件时的采样率,bits是波形文件每样本的编码位数。sound(x,fs,bits); % 按指定的采样率和每样本编码位数回放N=length(x); % 计算信号x的长度fn=2100; % 单频噪声频率,此参数可改t=0:1/fs:(N-1)/fs; % 计算时间范围,样本数除以采样频率x=x; y=x+0.1*sin(fn*2*pi*t); sound(y,fs,bits); % 应该可以明显听出有尖锐的单频啸叫声X=abs(fft(x); Y=a

26、bs(fft(y); % 对原始信号和加噪信号进行fft变换,取幅度谱X=X(1:N/2); Y=Y(1:N/2); % 截取前半部分deltaf=fs/N; % 计算频谱的谱线间隔f=0:deltaf:fs/2-deltaf; % 计算频谱频率范围subplot(2,2,1);plot(t,x);axis(0,2.8,-0.4,0.4);title(语音信号时域波形);xlabel(时间(单位:s));ylabel(幅度);n=(1:N/2)*deltaf;subplot(2,2,2);plot(n,X);axis(0,2500,0,2000);title(语音信号频域波形);xlabel(

27、频率(单位:Hz));ylabel(幅度谱);subplot(2,2,3);plot(t,y);axis(0,2.8,-0.5,0.5);title(语音加噪信号时域波形);xlabel(时间(单位:s));ylabel(幅度);subplot(2,2,4);plot(n,Y);axis(0,5000,0,8000);title(语音加噪信号频域波形);xlabel(频率(单位:Hz));ylabel(幅度谱);附录2:滤波器设计源程序%程序名称:滤波器的设计%程序功能:用FIR滤波器原型,再用NUTTALLWIN窗函数设计法将其离散化为数字滤波器。%程序作者:王培乙%最后修改日期:2012-

28、2-29fpd=2000;fsd=2050;fsu=2150;fpu=2200;Rp=1;As=40; % 带阻滤波器设计指标fcd=(fpd+fsd)/2;fcu=(fpu+fsu)/2;df=min(fsd-fpd),(fpu-fsu); % 计算上下边带中心频率,和频率间隔 wcd=fcd/fs*2*pi;wcu=fcu/fs*2*pi;dw=df/fs*2*pi; % 将Hz为单位的模拟频率换算为rad为单位的数字频率 wsd=fsd/fs*2*pi;wsu=fsu/fs*2*pi; M=ceil(15.4*pi/dw)+1; % 计算汉宁窗设计该滤波器时需要的阶数 n=0:M-1;

29、% 定义时间范围 w_ham=NUTTALLWIN(M); hd_bs=ideal_lp(wcd,M)+ideal_lp(pi,M)-ideal_lp(wcu,M); % 调用自编函数计算理想带阻滤波器的脉冲响应 h_bs=w_ham.*hd_bs; % 用窗口法计算实际滤波器脉冲响应 db,mag,pha,grd,w=freqz_m(h_bs,1); % 调用自编函数计算滤波器的频率特性;subplot(2,2,1);plot(w/pi,db);title(滤波器幅度响应图);xlabel(w/pi);ylabel(幅度mag);axis(0.05,0.15,-60,10);line(0,0

30、.6,0,0,color,r,LineStyle,-,LineWidth,2); line(0,0.6,-40,-40,color,r,LineStyle,-,LineWidth,2);line(wsd/pi,wsd/pi,-130,10,color,r,LineStyle,-,LineWidth,2); line(wsu/pi,wsu/pi,-130,10,color,r,LineStyle,-,LineWidth,2);subplot(2,2,2);plot(w/pi,mag);title(滤波器幅度响应图);xlabel(w/pi);ylabel(幅度mag);axis(0.05,0.1

31、5,0,1.40);subplot(2,2,3);plot(w/pi,pha);title(滤波器相位响应图);xlabel(w/pi);ylabel(相位pha);subplot(2,2,4);stem(n,h_bs);title(滤波器脉冲响应图);xlabel(n);ylabel(h(n); 附录3:信号滤波处理源程序%程序名称:语音信号滤波%程序功能:用设计好的滤波器对语音信号进行滤波,并画出滤波前后语音信号的时域波形和频谱对比图%程序作者: %最后修改日期:2012-2-29 y_fil=fftfilt(h_bs,y);% 用设计好的滤波器对y进行滤波 Y_fil=abs(fft(y

32、_fil);Y_fil=Y_fil(1:length(Y_fil)/2);% 计算频谱取前一半sound (y_fil,fs,bits); %音乐信号回放 figure; subplot(3,2,1);plot(t,x);grid on; title(原始拉弦音乐信号);xlabel(时间(t));ylabel(幅度); subplot(3,2,2);plot(f,X);grid on; axis(0,3000,0,2000); title(原始拉线音乐信号幅度谱);xlabel(频率(f));ylabel(幅度谱); subplot(3,2,3);plot(t,y);grid on; tit

33、le(加干扰后的音乐信号);xlabel(时间(t));ylabel(幅度); subplot(3,2,4);plot(f,Y);grid on; axis(0,3000,0,4000); title(加干扰后的音乐信号幅度谱);xlabel(频率(f));ylabel(幅度谱); subplot(3,2,5);plot(t,y_fil);grid on; title(滤波后的音乐信号);xlabel(时间(t));ylabel(幅度); subplot(3,2,6);plot(f,Y_fil);grid on; axis(0,3000,0,2000); title(滤波后的音乐信号幅度谱);xlabel(频率(f));ylabel(幅度谱);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号