数字信号Matlab作业.docx
- 文档编号:3292855
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:25
- 大小:228.40KB
数字信号Matlab作业.docx
《数字信号Matlab作业.docx》由会员分享,可在线阅读,更多相关《数字信号Matlab作业.docx(25页珍藏版)》请在冰豆网上搜索。
数字信号Matlab作业
生物医学信号处理大作业
题目:
滤波器处理语音信号FIR布莱克曼窗设计
学生姓名
精密仪器与光电子工程学院名称
班专业生物医学工程?
3011202312学号
题目要求:
录制自己的一段语音:
“天津大学精密仪器与光电子工程学院生物医学工程X班XXX,Collegeofprecisioninstrumentandopto-electronicsengineering,
biomedicalengineering”,时间控制在15秒到30秒左右;利用wavread函数对自己的语音进行采样,记住采样频率。
(1)求原始语音信号的特征频带(比如谱峰位置):
可以分别对一定时间间隔内,求功率谱(傅里叶变换结果取模的平方)并画出功率谱。
(2)根据语音信号频谱特点,设计FIR或IIR滤波器,分别画出滤波器幅频和相频特性曲线。
说明滤波器特性参数。
用设计的滤波器对信号滤波,画出滤波前后信号的频谱图。
用sound函数回放语音信号,说明利用高通/低通/带通滤波后的效果,不同特征频带被滤除后分别有什么效果。
(3)求出特征频段语音信号随时间变化的曲线(每隔一定时间求一次功率谱,连接成曲线,即短时FFT)。
(4)选做:
语谱图:
横轴为时间,纵轴为频率,灰度值大小表示功率谱值的大小。
(提示,可以采用spectrogram函数)
(5)选做:
分析自己的语音频谱特点,比如中英文发音的区别。
1.求原始语音信号的特征频带
代码:
clc
clearall
File=('I:
\Matlab大作业\work.wav')
[Y1,Fs,nbits]=wavread(File);
Y1=Y1(:
1)';%取双声道中的一个声道
l=length(Y1);
Y=Y1(1:
l);
Fs=44100;
figure
(1),
plot(Y);
title('原声音信号波形')
fori=1:
18;
x=Y(Fs*(i-1)+1:
Fs*i);
z=fft(x,Fs);
功率谱%p=z.*conj(z)/Fs;
figure(i);
plot(p);
xlabel('频率Hz')
ylabel('功率')
axis([0250001]);
end
1.1原始语音信号
原声音信号波形0.5
0.40.30.20.10-0.1-0.2-0.3-0.4-0.501234567895x10
1.2以1秒为时间间隔,求出17秒的语音信号的功率谱如下:
1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz频率1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz频率
1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz率频
1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz频率
1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz率频
1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz频率
1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz率频
1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz频率
1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz率频
1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz频率
1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz率频
1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz频率
1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz率频
1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz频率
1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz率频
1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz频率
1
0.90.80.70.6率0.5功0.40.30.20.100200400600800100012001400160018002000220024002500Hz频率
2.根据语音信号频谱特点,设计FIR或IIR滤波器,分别画出滤波器幅频和相频特性曲线。
说明滤波器特性参数。
用设计的滤波器对信号滤波,画出滤波前后信号的频谱图。
用sound函数回放语音信号,说明利用高通/低通/带通滤波后的效果,不同特征频带被滤除后分别有什么效果。
代码:
%==========低通滤波器==========%
fp=1300;fs=1500;%输入给定指标
%用窗函数法设计滤波器
wc=(fp+fs)/Fs;%理想低通滤波器截止频率(关于pi归一化)
B=2*pi*(fs-fp)/Fs;%过渡带宽度指标
N=ceil(12*pi/B);%blackman窗的长度N
h1=fir1(N-1,wc,'low',blackman(N));
%用窗函数法设计法的绘图部分
[h11,w1]=freqz(h1,1);
figure
(2)
subplot(2,1,1);
plot(w1*Fs/pi/2,20*log10(abs(h11)));
title('低通滤波器');
gridon;
axis([0,2500,-150,10]);
xlabel('频率/Hz');ylabel('幅度/dB')
subplot(2,1,2)
plot(w1*Fs/pi/2,angle(h11));
gridon;
axis([0,1000,-4,4]);
xlabel('频率/Hz');
ylabel('角度/rad');
%sound(ywt,Fs);
%==========高通滤波器==========%
fp=300;fs=100;%输入给定指标
%窗函数法设计滤波器
wc=(fp+fs)/Fs;%理想高通滤波器截止频率(关于pi归一化)
B=2*pi*(fp-fs)/Fs;%过渡带宽度指标
N=ceil(12*pi/B);%blackman窗的长度N
h2=fir1(N-1,wc,'high',blackman(N));
%=====以下为绘图部分=====
[h22,w2]=freqz(h2,1);
figure(3)
subplot(2,1,1);
plot(w2*Fs/pi/2,20*log10(abs(h22)));
title('高通滤波器');
gridon;
axis([0,1000,-100,20]);
xlabel('频率/Hz');ylabel('幅度/dB')
subplot(2,1,2)
plot(w2*Fs/pi/2,angle(h22));
gridon;
axis([0,1000,-4,4]);
xlabel('频率/Hz');
ylabel('角度/rad');
%========语音信号经过低通和高通滤波器========
Y_L=filter(h1,1,Y);
%sound(Y_L,Fs);
Y_H=filter(h2,1,Y);
%sound(Y_H,Fs);
Y_N=filter(h2,1,Y_L);
%sound(Y_N,Fs);
%========原始语音信号的频谱图========
DFT=fft(Y,Fs);
DFT=DFT./max(DFT);
figure(4),plot(abs(DFT));
axis([01000000.5]);
grid;
%========语音信号经过低通滤波器后的频谱图========
DFT_L=fft(Y_L,Fs);
DFT_L=DFT_L./max(DFT_L);
figure(5),plot(abs(DFT_L));
axis([0200000.8]);
grid;
%========语音信号经过高通滤波器后的频谱图========
DFT_H=fft(Y_H,Fs);
DFT_H=DFT_H./max(DFT_H);
figure(6),plot(abs(DFT_H));
axis([0800000.7]);
grid;
%========语音信号经过带通滤波器后的频谱图========
DFT_N=fft(Y_N,Fs);
DFT_N=DFT_N./max(DFT_N);
figure(7),plot(abs(DFT_N));
axis([0200001]);
grid;
(1)用布莱克曼窗FIR滤波器,画出低通滤波器的幅频和相频特性曲线如下:
低通滤波器
0-50Bd/度幅-100-15005001000150020002500/Hz率频4
2dar0/度角-2-401002003004005006007008009001000/Hz频率
低通滤波器的幅频和相频特性曲线
滤波器的设计参数:
通带截止频率fp=1300Hz;阻带截止频率fs=1500Hz;
(2)绘制出高通滤波器的幅频和相频特性曲线如下:
高通滤波器20
0-20Bd/-40度幅-60-80-10001002003004005006007008009001000/Hz率频4
2dar0/度角-2-401002003004005006007008009001000/Hz频率
高通滤波器的幅频和相频特性曲线
滤波器的设计参数:
通带截止频率fp=300Hz;阻带截止频率fs=100Hz;
)滤波前信号的频谱图3(.
0.5
0.450.40.350.30.250.20.150.10.050010002000300040005000600070008000900010000)经过低通滤波器后的语音信号频谱图(40.8
0.70.60.50.40.30.20.100200400600800100012001400160018002000
从图像可以看出,原始声音经过低通滤波器后,语音信号的幅度基本不变,滤波器把信号高频部分滤掉了,只剩下低频部分。
用sound函数回放语音信号,发现原始声音信号比滤波后声音信号清晰,滤波后声音显得很低沉。
.
(5)经过高通滤波后的语音信号频谱图
0.60.50.40.30.20.10010002000300040005000600070008000
从图像可以看出,原始声音经过高通滤波器后,语音信号的频率基本不变,但一部分噪声已经被滤掉,用sound函数回放语音信号,发现原始声音信号与高通滤波后信号差别很小,但是声音变得清晰,说明一部分噪声已被滤掉。
)经过带通滤波器后的语音信号频谱图6(.
1
0.90.80.70.60.50.40.30.20.100200400600800100012001400160018002000
从图像可以看出,原始声音经过带通滤波器后,高频部分被滤掉,部分噪声被滤掉,用sound函数回放语音信号,原始声音信号比滤波后声音信号清晰,滤波后声音比原始声音低沉,但比经过低通滤波器后的清亮。
(3)求出特征频段语音信号随时间变化的曲线(每隔一定时间求一次功率谱,连接成曲线,即短时FFT)。
我选取了语音信号出现较多的峰值对应的频率f=300Hz,500Hz,750Hz,900Hz,1000Hz,1200Hz,每隔0.1秒做功率谱,求出奇在0~17秒内的功率谱的变化情况,绘制出如下曲线:
代码:
clc
clearall
File=('I:
\Matlab大作业\work.wav')
[Y1,Fs,nbits]=wavread(File);
Y1=Y1(:
1)';%取双声道中的一个声道
l=length(Y1);
Y=Y1(1:
l);
I=[300,500,750,900,1000,1200];%功率谱峰值位置
p1=zeros;p2=zeros;
p3=zeros;p4=zeros;
p5=zeros;p6=zeros;
fori=1:
170;
S=Y(Fs/10*(i-1)+1:
Fs/10*i);
z=fft(S,Fs);
z1=z(I
(1));
z2=z(I
(2));
z3=z(I(3));
z4=z(I(4));
z5=z(I(5));
z6=z(I(6));
p1(i)=z1.*conj(z1)/Fs;%功率谱
p2(i)=z2.*conj(z2)/Fs;%功率谱
p3(i)=z3.*conj(z3)/Fs;%功率谱
p4(i)=z4.*conj(z4)/Fs;%功率谱
p5(i)=z5.*conj(z5)/Fs;%功率谱
p6(i)=z6.*conj(z6)/Fs;%功率谱
end
w=0:
17/(170-1):
17;
figure;
plot(w,p1);
xlabel('秒(s)');
title('300Hz功率谱变化图像');
figure;
plot(w,p2);
xlabel('秒(s)');
title('500Hz功率谱变化图像');
figure;
plot(w,p3);
xlabel('秒(s)');
title('750Hz功率谱变化图像');
figure;
plot(w,p4);
xlabel('秒(s)');
title('900Hz功率谱变化图像');
figure;
plot(w,p5);
xlabel('秒(s)');
title('1000Hz功率谱变化图像');
figure;
plot(w,p6);
xlabel('秒(s)');
title('1200Hz功率谱变化图像');
300Hz功率谱变化图像0.1
0.090.080.070.060.050.040.030.020.010024681012141618(s)秒
500Hz功率谱变化图像0.04
0.0350.030.0250.020.0150.010.0050024681012141618(s)秒
750Hz功率谱变化图像0.07
0.060.050.040.030.020.010024681012141618(s)秒
900Hz功率谱变化图像0.16
0.140.120.10.080.060.040.020024681012141618(s)秒
1000Hz功率谱变化图像0.1
0.090.080.070.060.050.040.030.020.010024681012141618(s)秒
1200Hz功率谱变化图像0.06
0.050.040.030.020.010024681012141618(s)秒4)语谱图:
横轴为时间,纵轴为频率,灰度值大小表示功率谱值的大小。
(代码:
win=window(@blackman,Fs);figure,spectrogram(Y,win,2500,Fs,Fs);
(5)分析自己的语音频谱特点,比如中英文发音的区别。
我的声音频率主要集中在300~1500Hz附近,原始声音信号经过滤波后,声音信号变得低沉,但英文发音部分比中文部分更弱,说明中文发音主要集中在低频段,英文发音集中在高频段。
.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 Matlab 作业