数字信号处理课程设记 湖南工程学院 !!!!!!!!!!!!!!!!!!!!!!!
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
z1=wavread('C:zhouzheng.wav'); plot(z1);
0123456
7
x 10
5
-0.4
-0.3-0.2-0.100.10.20.30.4
0.5
figure(1);
subplot(2,1,2); y1=z1(1:8192); Y1=fft(y1); plot(abs(Y1));
title('原始时域波形图');xlabel('时间t/s');ylabel('幅值/A'); figure(2);
y1=fft(z1,8000);
f1=8000*(0:7999)/8000; subplot(2,1,2); plot(f1,abs(y1));
title('原始频域波形图');xlabel('频率 f/Hz');ylabel('幅值/db') 原语音频域和时域波形图如下:
1000
2000
3000
400050006000
7000
8000
9000
051015
20原始时域波形图
时间t/s
幅值/A
1000
2000
3000
400050006000
7000
8000
051015
20原始频域波形图
频率 f/Hz
幅值/d b
②对语音信号进行频谱分析,在MATLAB 中,可以利用函数fft 对信号进行快速付立叶变换,得到信号的频谱特性 z1=wavread('C:zhouzheng.wav'); y1=z1(1:8192); Y1=fft(y1); n=0:8191; plot(n,Y1);
图像输出如图2:
0100020003000400050006000700080009000
-20
-15
-10
-5
5
10
15
3. 设计数字滤波器和对信号滤波
(1)窗函数设计低通滤波器 程序设计如下: clear;close all
[z1,fs,bits]=wavread('C:zhouzheng.wav') y1=z1(1:8192); Y1=fft(y1);
fp=1000;fc=1200;As=100;Ap=1;Fs=8000; wc=2*pi*fc/Fs; wp=2*pi*fp/Fs; wdel=wc-wp;
beta=0.112*(As-8.7);
N=ceil((As-8)/2.285/wdel); wn= kaiser(N+1,beta); ws=(wp+wc)/2/pi;
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,1000,0,1.0]); title('滤波后信号频谱'); subplot(2,2,3);plot(z1); title('滤波前信号波形'); subplot(2,2,4);plot(x); title('滤波前信号波形'); sound(x,fs,bits);
图形分析如下:
0.1
0.2
0.30.40.50.60.70.80.9
1
-8000
-6000-4000-2000
Normalized Frequency (⨯π rad/sample)
P h a s e (d e g r e e s )
00.10.2
0.30.40.50.60.70.80.91
-200
-100
100Normalized Frequency (⨯π rad/sample)
M a g n i t u d e (d B )
0500
1000
0.5
1
滤波前信号频谱
0500
1000
0.5
1
滤波后信号频谱
02468
x 10
5
-0.5
0.5滤波前信号波形
02468
x 10
5
-0.4
-0.2
00.2
0.4滤波前信号波形
2)窗函数设计高通滤波器
程序设计如下: clear;close all
[z1,fs,bits]=wavread('C:zhouzheng.wav') y1=z1(1:8192); Y1=fft(y1);
fp=2800;fc=3000;As=100;Ap=1;Fs=8000; wc=2*pi*fc/Fs; wp=2*pi*fp/Fs; wdel=wc-wp;
beta=0.112*(As-8.7);
N=ceil((As-8)/2.285/wdel); wn= kaiser(N,beta); ws=(wp+wc)/2/pi;
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);