《最新FIR数字低通滤波器的(汉宁)窗函数法设计.doc》由会员分享,可在线阅读,更多相关《最新FIR数字低通滤波器的(汉宁)窗函数法设计.doc(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateFIR数字低通滤波器的(汉宁)窗函数法设计FIR数字低通滤波器的(汉宁)窗函数法设计语音信号的数字滤波FIR数字滤波器的(汉宁)窗函数法设计设计题目:语音信号的数字滤波FIR数字滤波器的(汉宁)窗函数法设计一、课程设计的目的通过对常用数字滤波器的设计和实现,掌握数字信号处理的工作原理及设计方法;掌握利用数字滤波器对信号进行滤波的方法。并能够对设计结果加以分析。二、设计
2、步骤2.1窗函数设计法的原理窗函数的基本思想:先选取一个理想滤波器(它的单位抽样响应是非因果、无限长的),再截取(或加窗)它的单位抽样响应得到线性相位因果FIR滤波器。这种方法的重点是选择一个合适的窗函数和理想滤波器。设x(n)是一个长序列,是长度为N的窗函数,用截断,得到N点序列,即 在频域上则有由此可见,窗函数不仅仅会影响原信号在时域上的波形,而且也会影响到频域内的形状。2.2汉宁窗函数简介汉宁窗、海明窗和布莱克曼窗,都可以用一种通用的形式表示,这就是广义余弦窗。这些窗都是广义余弦窗的特例,汉宁(Hanning)窗又称升余弦窗,汉宁窗可以看作是3个矩形时间窗的频谱之和,或者说是 3个 si
3、nc(t)型函数之和,而括号中的两项相对于第一个谱窗向左、右各移动了/T,从而使旁瓣互相抵消,消去高频干扰和漏能。适用于非周期性的连续信号。公式如下:2.3进行语音信号的采集(1)按“开始”“程序”“附件”“娱乐”“录音机”的顺序操作打开Windows系统中的录音机软件。如图1所示。图1 windows录音机(2)用麦克风录入自己的声音信号并保存成wav文件。如图2所示。图2 保存文件保存的文件按照要求如下: 音信号文件保存的文件名为“yuxuejiao.wav”。语音信号的属性为“8.000KHz,8位,单声道 7KB/秒” ,其它选项为默认。2.4语音信号的分析将“yuxuejiao.wa
4、v”语音文件复制到计算机装有Matlab软件的磁盘中相应Matlab目录中的“work”文件夹中。打开Matlab软件,在菜单栏中选择“File”“new”将代码复制到空白处,并保存到“work”文件夹中,和声音文件在同一个文件夹内。2.4.1语音信号的截取处理和频谱分析编写MATLAB编码实现对信号的截取处理,也就是对yf.wav语音的截取处理,截取范围为17000-57000。代码如下:s, fs=wavread(yuxuejiao.wav);s1=s(17000:57000);figure(1);subplot(211)plot(s)title(原始语音信号)subplot(212)pl
5、ot(s1)title(截短语音信号);wavwrite(s1,fs,s1.wav);S1=fft(s1);figure(2)subplot(311);plot(s1);title(截短预处理语音信号)subplot(312)plot(abs(S1)title(预处理语音信号频谱);subplot(313);k=0:39999;plot(k(1:20000)*1,abs(S1(1:20000);title(预处理语音信号单边带频谱)在m文件编辑器中输入相应的指令将自己的语音信号导入Matlab工作台,点击“run”或者 “F5”运行文件。效果如图3和图4图3语音信号的截取处理图在图3中, 其中
6、第一个图为原始语音信号;第二个图是截短后的信号图。图4频谱分析图其中第二个图是信号的FFT结果,其横坐标的具体值是X(k)中的序号k;第三个图是确定滤波频率范围的参考图,其横坐标的具体值应当是遵循DFT定义式和频率分辨率求得的:当k等于0时, ,从数字角频率上看,对应的正好是即直流的位置,也就是说,在取滤波频段时,当将主要能量(即红色框的部分)保留,其余频段部分的信号滤除。相当于是信号的实际频谱采样,而又是连续时间语音信号的采样。的每两个相邻取值之间的频率间隔大小对应到语音信号的频谱中去,其频率间隔大小正好是称频率分辨率,其中, 由于在第三个图中是遵循DFT定义式和频率分辨率求得,表示的是滤波
7、频率的范围2.5滤波器的设计2.5.1滤波器理论参数设定(1) 从图4可知我们已经确定了通带截止频率和阻带截止频率和。 由于hanning窗过渡带满足 (2)给定所要求的频率响应函数 (3)求单位采样响应(4)计算线性相位延迟,hanning窗=(5)滤波器的单位采样响应:2.5.2滤波器的MATLAB仿真 在M文件中继续编写代码,把计算出来的参数带入代码中。代码如下:s2=awgn(s1,30); %完成加噪!30dbwavwrite(s2,fs,s2.wav);figure(3);subplot(211);plot(s2);title(加噪后语音信号);subplot(212);S2=ff
8、t(s2);plot(abs(S2);title(加噪后信号频谱);figure(4)subplot(211);plot(s1);title(语音信号);subplot(212);plot(s2);title(加噪后语音信号);%滤波器完成相关参数配置wp=900*2*pi/8000;wst=1000*2*pi/8000;wc=(wp+wst)/2;N=ceil(3.1*2*pi/(wst-wp);r=(N-1)/2;hn1=fir1(N-1,wc/pi,low,hanning(N);%s3=conv(s2,hn1);wavwrite(s3,fs,s3.wav);S3=fft(s3);figu
9、re(5)freqz(hn1);title(滤波器幅频特性与相频特性)figure(6)subplot(111)stem(hn1);title(滤波器单位采样响应);figure(7)subplot(211)plot(s3)title(滤波器处理之后信号图)subplot(212);plot(abs(S3); title(滤波器处理之后频谱);figure(8)subplot(211)plot(s2);title(加噪后语音信号);subplot(212);plot(s3);title(滤波器处理之后信号图);s4=conv(s1,hn1);p1=sum(s1.2);p2=sum(s2.2)-
10、sum(s1.2);SNR1=10*log10(p1/p2);p3=sum(s4.2)/8000;p4=sum(s3.2)/8000-sum(s4.2)/8000;SNR2=10*log10(p3/p4);2.6 噪声叠加图5 语音信号与加噪声后语音信号对比图五为语音信号与加噪声后语音信号对。比计算机随即产生的噪声指令为:awgn() 所加的噪声为30 。图6 加噪后语音信号与加噪后信号频谱图图7滤波器频幅特性与相频特性图8滤波器单位采样响应 图7是滤波器频幅特性与相频特性,图8是hanning窗函数单位冲激响应系数。图9 滤波器处理后的信号及频谱图图10 加噪后的语音信号及处理后的信号图设计
11、的滤波器是用单位采样响应h(n)表示的,可以利用带噪声语音与h(n)做时域卷积,即: 。在Matlab中,卷积运算可以用函数“conv( )”实现。滤波前(含噪声)的信号和滤波后信号的信噪比, 利用sum求信号的功率。在m文件中继续编写信噪比代码段:s4=conv(s1,hn1);p1=sum(s1.2);p2=sum(s2.2)-sum(s1.2);SNR1=10*log10(p1/p2);p3=sum(s4.2)/8000;p4=sum(s3.2)/8000-sum(s4.2)/8000;SNR2=10*log10(p3/p4);三、设计结果与分析滤波就是将外界干扰的不需要的频率滤除掉,一
12、面影响要测试数据的结果。采样间隔也会对实验产生影响,取的过大会导致频率混叠。3.1比较滤波前(含噪声信号的文件)和滤波后的语音信号效果。图10 利用hamming窗FIR低通滤波器滤波效果图图10为滤波前后的效果图,第一个图是加噪后的图,图中波形的毛刺部分(即干扰噪声)被滤除,输入的带噪声信号经过滤波器滤波后,即第二个图中所示波形。图中有明显的滤波效果,滤波器不仅把30的噪声滤掉了,同时也也能滤掉了原信号的声音,因此在实际的实验会和理论有误差,许多时候得不到完美的效果。3.2滤波前(含噪声)的信号和滤波后信号的信噪比图11相关参数的截图,其中snr为信噪比图11是利用“信噪比代码段”做出来的效
13、果图,图中名称snr1为最滤波前的信噪比,snr2为滤波后的信噪比,snr2大于snr1,最终达到了效果。四、设计体会在本次课程设计中,让我更加了解了数字信号处理在实际上的应用,课程设计不仅要求对滤波器理论的研究,更重要的是实际设计中遇到的问题。因为有了这次课程设计,我不得不对其设计原理进行更深一层次的理解,对书中原来学到的理论,仅知道了其表面,而不知其原因。在设计中也使我对一些概念有了更深刻的认识。除此之外,对程序的编译不是一蹴而就的,而是经过多次的编译与调试。以前用MATLAB就是简单的输入,可以说都不是自己的劳动成果,但这次不一样,课程设计没有别人给你编好,而是自己写,出错率就大大提高了
14、,但这是过程,学习就是在过程中进行的,经过自己几天的脑力劳动,再加上同学们的帮助,不仅对读程序有了很大提高,而且自己的编译水平也上了一个新台阶,更加熟系了MATLAB的应用,也对其中的函数有了大概的了解,对其中一些函数也相当熟练。完成整个设计过程后,学到的东西已经不仅仅上面的那些东西,还有同学们互相帮助,共同探讨和设计过程中的每一个细节,也许每一个细节的错误就可能导致结局的失败,所以我认为这次收获最大的莫过于静心,学习不能急,一定要冷静,心无旁骛,不放过任何一个细节,就能带来凯旋的消息。 在此,感谢老师一学年以来对我们不仅学习上的关心,还有生活中的照顾,我也不会辜负老师的期望,继续努力深造。五、参考文献1程佩青.数字信号处理教程(第三版)M.北京:清华大学出版社,2006.2施阳.MATLAB语言工具箱M西北工业大学出版社,1999 :45-78.3程佩青编著数字信号处理教程北京:清华大学出版社,20074李正周编著. MATLAB数字信号处理与应用. 北京:清华大学出版社2008.-