实验九:数字滤波器设计与语音信号处理
一、实验目的
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.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。
五、参考答案
第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
--------------------------------------------------------- 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以下子带信号');
结果: 第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); 结果:
实验十:数字图像处理初步
一、实验目的
1.掌握图像文件的读取与写入。
2.掌握图像文件的显示、翻转、缩放、叠加
3.掌握黑白和彩色图像在Matlab中矩阵存储格式。
二、实验内容(边做实验,边将生成结果和图形拷贝到Word文档中)
1.将Test3.jpg和Test4.jpg两个图像文件复制到C:\\Matlab6p5\\work\\目录下。 2.读取Test3.jpg到矩阵A中,观察A的维数,并显示该图像。
3.对A做一定的处理和变换,使之成为下面的图像,并存储到文件PicOut.bmp中。
4.读取Test4.jpg到矩阵X中,去掉红色图层,然后显示出来。
三、设计提示
1.首先计算A的维数,然后列数放大1倍,再考虑将矩阵左半边的图像数据镜像到右半边去。
2.对于彩色图像,矩阵的维数是:行数×列数×图层数(1-红,2-绿,3-蓝)。
四、实验报告要求
1.编写实现第二节实验内容所使用的M文件,并记录相应的生成结果。
2.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。
五、参考答案
第3题:
A=imread('Test3.jpg'); figure(1); imshow(A);
[x,y,z]=size(A); B=A; %复制左边图像
B(:,[y+1:2*y],1)=fliplr(A(:,:,1)); %扩维并复制右边图像的红色图层(第一层) B(:,[y+1:2*y],2)=fliplr(A(:,:,2)); %扩维并复制右边图像的红色图层(第二层) B(:,[y+1:2*y],3)=fliplr(A(:,:,3)); %扩维并复制右边图像的红色图层(第三层) figure(2); imshow(B);
imwrite(B,'PicOut.bmp'); 结果:(略) 第4题:
X=imread('Test4.jpg'); figure(1); imshow(X); Y=X;
Y(:,:,1)=0; figure(2); imshow(Y); 结果:(略)