FIR数字低通滤波器的(汉宁)窗函数法设计.doc
- 文档编号:8775599
- 上传时间:2023-05-14
- 格式:DOC
- 页数:15
- 大小:558KB
FIR数字低通滤波器的(汉宁)窗函数法设计.doc
《FIR数字低通滤波器的(汉宁)窗函数法设计.doc》由会员分享,可在线阅读,更多相关《FIR数字低通滤波器的(汉宁)窗函数法设计.doc(15页珍藏版)》请在冰点文库上搜索。
课程设计说明书NO.15
语音信号的数字滤波
——FIR数字滤波器的(汉宁)窗函数法设计
设计题目:
语音信号的数字滤波——FIR数字滤波器的(汉宁)窗函数法设计
一、课程设计的目的
通过对常用数字滤波器的设计和实现,掌握数字信号处理的工作原理及设计方法;掌握利用数字滤波器对信号进行滤波的方法。
并能够对设计结果加以分析。
二、设计步骤
2.1窗函数设计法的原理
窗函数的基本思想:
先选取一个理想滤波器(它的单位抽样响应是非因果、无限长的),再截取(或加窗)它的单位抽样响应得到线性相位因果FIR滤波器。
这种方法的重点是选择一个合适的窗函数和理想滤波器。
设x(n)是一个长序列,是长度为N的窗函数,用截断,得到N点序列,即
在频域上则有
由此可见,窗函数不仅仅会影响原信号在时域上的波形,而且也会影响到频域内的形状。
2.2汉宁窗函数简介
汉宁窗、海明窗和布莱克曼窗,都可以用一种通用的形式表示,这就是广义余弦窗。
这些窗都是广义余弦窗的特例,汉宁(Hanning)窗又称升余弦窗,汉宁窗可以看作是3个矩形时间窗的频谱之和,或者说是3个sinc(t)型函数之和,而括号中的两项相对于第一个谱窗向左、右各移动了π/T,从而使旁瓣互相抵消,消去高频干扰和漏能。
适用于非周期性的连续信号。
公式如下:
2.3进行语音信号的采集
(1)按“开始”-“程序”-“附件”-“娱乐”-“录音机”的顺序操作打开Windows系统中的录音机软件。
如图1所示。
图1windows录音机
(2)用麦克风录入自己的声音信号并保存成wav文件。
如图2所示。
图2保存文件
保存的文件按照要求如下:
①音信号文件保存的文件名为“yuxuejiao.wav”。
②语音信号的属性为“8.000KHz,8位,单声道7KB/秒”,其它选项为默认。
2.4语音信号的分析
将“yuxuejiao.wav”语音文件复制到计算机装有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)
plot(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中,其中第一个图为原始语音信号;
第二个图是截短后的信号图。
图4频谱分析图
其中第二个图是信号的FFT结果,其横坐标的具体值是X(k)中的序号k;第三个图是确定滤波频率范围的参考图,其横坐标的具体值应当是遵循DFT定义式和频率分辨率求得的:
当k等于0时,,从数字角频率上看,对应的正好是即直流的位置,也就是说,在取滤波频段时,当将主要能量(即红色框的部分)保留,其余频段部分的信号滤除。
相当于是信号的实际频谱采样,而又是连续时间语音信号的采样。
的每两个相邻取值之间的频率间隔大小对应到语音信号的频谱中去,其频率间隔大小正好是
称频率分辨率,其中,,
由于在第三个图中是遵循DFT定义式和频率分辨率求得,表示的是滤波频率的范围
2.5滤波器的设计
2.5.1滤波器理论参数设定
(1)从图4可知我们已经确定了通带截止频率和阻带截止频率和。
由于hanning窗过渡带满足
(2)给定所要求的频率响应函数
(3)求单位采样响应
(4)计算线性相位延迟
,
hanning窗=
(5)滤波器的单位采样响应:
2.5.2滤波器的MATLAB仿真
在M文件中继续编写代码,把计算出来的参数带入代码中。
代码如下:
s2=awgn(s1,30);%%%%%%%%%%%%%%%%%%%%%%%%%%完成加噪!
30db
wavwrite(s2,fs,'s2.wav');
figure(3);
subplot(211);
plot(s2);
title('加噪后语音信号');
subplot(212);
S2=fft(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);
figure(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)-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加噪后的语音信号及处理后的信号图
设计的滤波器是用单位采样响应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);
三、设计结果与分析
滤波就是将外界干扰的不需要的频率滤除掉,一面影响要测试数据的结果。
采样间隔也会对实验产生影响,取的过大会导致频率混叠。
3.1比较滤波前(含噪声信号的文件)和滤波后的语音信号效果。
图10利用hamming窗FIR低通滤波器滤波效果图
图10为滤波前后的效果图,第一个图是加噪后的图,图中波形的毛刺部分(即干扰噪声)被滤除,输入的带噪声信号经过滤波器滤波后,即第二个图中所示波形。
图中有明显的滤波效果,滤波器不仅把30的噪声滤掉了,同时也也能滤掉了原信号的声音,因此在实际的实验会和理论有误差,许多时候得不到完美的效果。
3.2滤波前(含噪声)的信号和滤波后信号的信噪比
图11相关参数的截图,其中snr为信噪比
图11是利用“信噪比代码段”做出来的效果图,图中名称snr1为最滤波前的信噪比,snr2为滤波后的信噪比,snr2大于snr1,最终达到了效果。
四、设计体会
在本次课程设计中,让我更加了解了数字信号处理在实际上的应用,课程设计不仅要求对滤波器理论的研究,更重要的是实际设计中遇到的问题。
因为有了这次课程设计,我不得不对其设计原理进行更深一层次的理解,对书中原来学到的理论,仅知道了其表面,而不知其原因。
在设计中也使我对一些概念有了更深刻的认识。
除此之外,对程序的编译不是一蹴而就的,而是经过多次的编译与调试。
以前用MATLAB就是简单的输入,可以说都不是自己的劳动成果,但这次不一样,课程设计没有别人给你编好,而是自己写,出错率就大大提高了,但这是过程,学习就是在过程中进行的,经过自己几天的脑力劳动,再加上同学们的帮助,不仅对读程序有了很大提高,而且自己的编译水平也上了一个新台阶,更加熟系了MATLAB的应用,也对其中的函数有了大概的了解,对其中一些函数也相当熟练。
完成整个设计过程后,学到的东西已经不仅仅上面的那些东西,还有同学们互相帮助,共同探讨和设计过程中的每一个细节,也许每一个细节的错误就可能导致结局的失败,所以我认为这次收获最大的莫过于静心,学习不能急,一定要冷静,心无旁骛,不放过任何一个细节,就能带来凯旋的消息。
在此,感谢老师一学年以来对我们不仅学习上的关心,还有生活中的照顾,我也不会辜负老师的期望,继续努力深造。
五、参考文献
[1]程佩青.数字信号处理教程(第三版)[M].北京:
清华大学出版社,2006.
[2]施阳.MATLAB语言工具箱[M].西北工业大学出版社,1999:
45-78.
[3]程佩青编著.数字信号处理教程.北京:
清华大学出版社,2007.
[4]李正周编著.MATLAB数字信号处理与应用.北京:
清华大学出版社2008.
沈阳大学
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FIR 数字 滤波器 汉宁 函数 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)