29
实验九:数字滤波器设计与语音信号处理
一、实验目的
1.掌握Butterworth滤波器、Chebyshev Ⅰ型、Ⅱ型滤波器的设计,并能用于对语音信号子频带的提取。 2.了解FIR滤波器的设计。
二、实验内容(边做实验,边将生成结果和图形拷贝到Word文档中)
1.将Test1.wav和Test2.wav两个语音文件复制到C:\\Matlab6p5\\work\\目录下。 2.设计一个4阶的Chebyshev Ⅱ型模拟高通滤波器,要求截止频率fc?1kHz,阻带纹波不超过-30dB。取采样频率Fs?10kHz。要求结果给出该滤波器的传递函数表达式,并画出该滤波器的频率响应曲线图。
3.设计一个6阶的Butterworth数字带通滤波器,要求截止频率fc1?1000Hz,
fc2?3000Hz,取采样频率Fs?10kHz。要求结果给出该滤波器的传递函数表达式,并画出该滤波器的频率响应曲线图。 4.设计一个6阶的Butterworth数字低通滤波器,从一段含噪声语音信号Test2.wav(0~4kHz,Fs=8kHz)中提取出500Hz以下的子带信号。在一个图形窗口中分上下两个子窗口分别显示原始语音信号波形和滤波后的500Hz以下子带信号波形。
5.设计一个65阶的FIR数字滤波器,通带(归一化):0~0.45、0.65~0.85。画出该滤波器的频率响应曲线图。
三、设计提示
1.设计滤波器时,注意频率的归一化。
2.Chebyshev Ⅱ型模拟高通滤波器设计,用函数cheby2(n,Rs,Wn,'high','s')。其中Rs=30(即表示:阻带纹波不超过-30dB)。
3.设计IIR带通或带阻滤波器时,若给滤波器函数的参数为n,则设计出来的是2n阶的滤波器。
4.设计高通滤波器,用'high'关键字;带通用'bandpass'关键字。
5.查看模拟滤波器的频率响应曲线用freqs函数,查看数字滤波器的频率响应曲线用freqz函数。
6.对于FIR滤波器的设计,第一通带如果从0开始,则应加关键字'DC-1'。
四、实验报告要求
1.编写实现第二节实验内容所使用的M文件,并在Word文档中记录相应的生成结果和图形。
2.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。
五、参考答案
《Matlab语言及其在电子信息科学中的应用》实验指导书
30
第2题: fc=1000; Fs=10000;
Wn=fc/(Fs/2); %归一化 n=4; Rs=30;
[b,a]=cheby2(n,Rs,Wn,'high','s'); sys=tf(b,a) freqs(b,a); 结果:
s^4 - 1.42e-017 s^3 + 0.04 s^2 - 2.938e-018 s + 0.0002 ------------------------------------------------------ s^4 + 0.6442 s^3 + 0.2475 s^2 + 0.05581 s + 0.006325
第3题: fc1=1000; fc2=3000; Fs=10000;
Wn=[fc1,fc2]/(Fs/2); %归一化 n=6;
[b,a]=butter(n/2,Wn,'bandpass'); sys=tf(b,a)
freqz(b,a,512); 结果:
Transfer function:
0.09853 - 0.2956 z^-2 + 0.2956 z^-4 - 0.09853 z^-6
《Matlab语言及其在电子信息科学中的应用》实验指导书
31
--------------------------------------------------------- 1 - 1.366 z^-1 + 1.245 z^-2 - 0.8777 z^-3 + 0.6537 z^-4 - 0.2256 z^-5 + 0.0563 z^-6
第4题:
[x,Fs,Bit]=wavread('Test2.wav'); Wn=500/(Fs/2); %归一化 n=6;
[b,a]=butter(n,Wn); y=filter(b,a,x);
subplot(211); plot(x) title('原始语音信号'); subplot(212); plot(y)
title('500Hz以下子带信号'); 结果:
《Matlab语言及其在电子信息科学中的应用》实验指导书
32
第5题: n=65;
Wn=[0.45,0.65,0.85]; b=fir1(n,Wn,'DC-1'); a=1;
sys=tf(b,a)
freqz(b,a,512); 结果:
《Matlab语言及其在电子信息科学中的应用》实验指导书