淮北煤炭师范学院学士学位论文 基于MATLAB的数字滤波器设计
b=fir1(N-1,ws,'high',wn); figure(1); freqz(b,1); x=fftfilt(b,z1); X=fft(x,8192); figure(2);
subplot(2,2,1);plot(abs(Y1));axis([0,1000,0,1.0]); title('滤波前信号频谱');
subplot(2,2,2);plot(abs(X));axis([0,1000,0,1.0]); title('滤波后信号频谱'); subplot(2,2,3);plot(z1); title('滤波前信号波形'); subplot(2,2,4);plot(x); title('滤波后信号波形'); sound(x,fs,bits);
图形分析如图20、图21:
滤波前信号频谱1100滤波后信号频谱10.80.60.40.20.80.60.4Magnitude (dB)0-1000.2000.10.20.30.40.50.60.70.8Normalized Frequency (?? rad/sample)0.91-2000500滤波前信号波形100000500滤波后信号波形1000200010.50-0.5-1024x 10640.040.020-0.02-0.04024x 1064Phase (degrees)0-2000-4000-6000-800000.10.20.30.40.50.60.70.8Normalized Frequency (?? rad/sample)0.91
图20 FIR数字高通滤波器幅频-相位特性曲线 图21 滤波前后信号频谱和波形对比
3、窗函数设计带通 程序设计如下: clear;close all
[z1,fs,bits]=wavread('E:\\耿博.wav') y1=z1(1:8192); Y1=fft(y1);
27
淮北煤炭师范学院学士学位论文 基于MATLAB的数字滤波器设计
fp1=1200 ;fp2=3000 ;fc1=1000 ;fc2=3200 ;As=100 ;Ap=1 ;Fs=8000 ; wp1=2*pi*fp1/Fs; wc1=2*pi*fc1/Fs; wp2=2*pi*fp2/Fs; wc2=2*pi*fc2/Fs; wdel=wp1-wc1; beta=0.112*(As-8.7); N=ceil((As-8)/2.285/wdel);
ws =[(wp1+wc1)/2/pi,(wp2+wc2)/2/pi]; wn= kaiser(N+1,beta); b=fir1(N,ws,wn); figure(1); freqz(b,1) x=fftfilt(b,z1); X=fft(x,8192); figure(2);
subplot(2,2,1);plot(abs(Y1));axis([0,1000,0,1.0]); title('滤波前信号频谱');
subplot(2,2,2);plot(abs(X));axis([0,2000,0,0.0003]); title('滤波后信号频谱') subplot(2,2,3);plot(z1); title('滤波前信号波形'); subplot(2,2,4);plot(x); title('滤波后信号波形'); sound(x,fs,bits);
图形分析如图22、图23:
100滤波前信号频谱10.80.62-4x 10滤波后信号频谱
Magnitude (dB)0-1000.40.21-20000.10.20.30.40.50.60.70.8Normalized Frequency (?? rad/sample)0.9100500滤波前信号波形1000005001000150020005000滤波后信号波形0.10.050-0.0510.50-0.5Phase (degrees)0-5000-10000-1500000.10.20.30.40.50.60.70.8Normalized Frequency (?? rad/sample)0.91-1024x 1064-0.1024x 1064
图22 FIR数字带通滤波器幅频-相位特性曲线 图23 滤波前后信号频谱和波形对比
28
淮北煤炭师范学院学士学位论文 基于MATLAB的数字滤波器设计
5 总 结
本文在数字滤波器的设计过程中,采用的设计方法是基于MATLAB的数字滤波器的设计。本文通过IIR数字滤波器和FIR数字滤波器的设计实例,说明如何利用MATLAB来完成数字滤波器的设计。窗函数法中相位响应有严格的线性,不存在稳定性问题, 设计简单。双线性变换不会出现由于高频部分超过折叠频率而混淆到低频部分去的现象,但会产生频率混碟现象,使数字滤波器的频响偏移模拟滤波器的频响。
在对语音信号进行滤波的时候,双线性低通滤波器的滤波效果最好,滤波后的语音信号失真比较小,高通和带通的失真都较大。由此可知人的语音信号的能量主要集中在低频部分。
在用窗函数设计滤波器的时候,由于所给指标的阻带衰减比较大,对所选窗的要求比较苛刻,而且很难达到所给指标。由公式N>=a*fc/|fp-fs|或公式N=1+(As-7.95)*fc/[14.36*|fp-fs|]可算得阶数N>=3。但实际在仿真的过程中发现要想达到阻带的最小衰减为100,阶数N得选很大,约在800左右。对如此大阶数的滤波器在实现的时候很困难。
由滤波器的频谱图和滤波前后的语音信号的频谱图对比可知本设计选用双线性变换法设计的IIR滤波器比较好。在同样的技术指标的要求下,IIR滤波器所要求的阶数N也比较小,实现起来比较容易。
事实上IIR滤波器系统函数的极点可以在单位圆内的任何位置,实现IIR滤波器的阶次较低,所用的存储单元较少,效率高,且IIR数字滤波器能够保留一些模拟滤波器的优良特性。但是这些特性是以牺牲线性相位频率特性为代价的,即用Butterworth、chelbchev滤波器的幅度频率特性,得到的滤波器往往是非线性的。在许多电子系统中,对幅度频率特性和线性相位特性都有较高的要求,所以IIR滤波器在这些系统中往往难以胜任。有限长单位冲激响应(FIR)数字滤波器具有以下优良的特点:可在设计任意幅度频率特性滤波器的同时,保证精确、严格的线性相位特性。FIR数字滤波器的单位冲激响应h(n)是有限长的,可以用一个固定的系统来实现,因而FIR数字滤波器可以做成因果稳定系统。
29
淮北煤炭师范学院学士学位论文 基于MATLAB的数字滤波器设计
参考文献
[1] 丁玉美,高西全等.数字信号处理[M].西安:西安电子科技大学出版社,2000. [2] 程佩青,数字信号处理教程[M].北京:清华大学出版社,2003.
[3] 罗军辉,罗勇江等.MATLAB7.0在数字信号处理中的应用[M].北京:机械工
业出版社,2005.
[4] 郭仕剑,王宝顺等.MATLAB7.X数字信号处理[M].北京:人民邮电出版社,
2006.
[5] 门爱东,杨波等.数字信号处理.北京:人民邮电出版社,2003.
[6] 余成波,杨菁等.数字信号处理及MATLAB实现[M].北京:清华大学出版社,2005.
[7] T.W.ParksandC.S.Burrus.DigitalFilterDesign.NewYork,NewYork: Wiley-Interscience,1987.
[8]S.K.Mitra.Digital Signal Processing:A Computer-Based Approach. NewYork,NewYork:McGraw-Hill,thirded,2006.
[9] 赵琳,王淑伟,邢帆.基于 Matlab的数字滤波器设计方法研究[J].产业与科技论坛.2008(9).157~158
[10] 张亚妮.基于MATLAB的数字滤波器设计[J].辽宁工程技术大学学报.2005年10月第24卷第5期.716~718
[11] 阎晓艳,傅丰林等.FIR数字滤波器的设计及其在MATLAB中的仿真实现[J].
电子科技.2004(5).43~46
30
淮北煤炭师范学院学士学位论文 基于MATLAB的数字滤波器设计
致 谢
诚挚地感谢邹锋等老师的帮助和精心指导!本文是在邹锋老师的指导和支持下完成的。如果没有老师的指导,我想我是很难在这么短的时间内顺利完成论文的设计。邹老师的治学态度、敬业精神对我产生了很大影响。他的教导和思路给予我无尽的启迪。
最后,再次对在大学四年里关心和帮助我的老师表示衷心地感谢!
31