logo资料库

MATLAB声音信号的采集与滤波处理.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
Matlab 实验报告(题目二) (题目二) 声音信号的采集与滤波处理(采用 IIR 滤波器或 FIR 滤波器) 参考资料:信号的采集、数字信号处理及滤波实例 要求:(1)采集声音信号或打开已录好的声音文件,并显示其信号图与频域图。 (2)根据信号的特点,选用合适的滤波器,给定滤波器的规一化性能指 标(参考指标,实际中依据每个同学所叠加噪声情况而定)例如:通带截止频率 wp=0.25*pi, 阻通带截止频率 ws=0.3*pi; 通带最大衰减 Rp=1 dB; 阻带最小衰减 Rs=15 dB,对信号进行滤波。 在 Matlab 中,可以利用函数 fir1 设计 FIR 滤波器,可以利用函数 butte,cheby1 和 ellip 设计 IIR 滤波器;利用 Matlab 中的函数 freqz 画出各滤波器的频率响应, 滤波器设计完后,用 filter 函数用这些数字滤波器对含噪语音信号分别进行滤 波处理。 (3)还原音乐信号,并画出其时域图与频域图,并与原始信号比较,且 回放音乐信号。 %语音信号采样频率为 22050 %做原始语音信号的时域图形 %播放语音信号 %对信号做 1024 点 FFT 变换 (1)打开一个自己录制的音乐文件进行实验,这是实验程序: fs=22050; x1=wavread('e:\威尼斯的泪.wav'); %读取语音信号的数据,赋给变量 x1 sound(x1,22050); y1=fft(x1,1024); f=fs*(0:511)/1024; figure(1) plot(x1) title('原始语音信号'); xlabel('time n'); ylabel('fuzhi n'); figure(2) freqz(x1) title('频率响应图') figure(3) subplot(2,1,1); plot(abs(y1(1:512))) title('原始语音信号 FFT 频谱') subplot(2,1,2); plot(f,abs(y1(1:512))); title('原始语音信号频谱') xlabel('Hz'); ylabel('fuzhi'); %绘制原始语音信号的频率响应图 %做原始语音信号的 FFT 频谱图 实验效果
(2)实验程序 clear; fs=22050; x1=wavread('e:\威尼斯的泪.wav'); f=fs*(0:511)/1024; t=0:1/22050:(length(x1)-1)/22050; %将所加噪声信号的点数调整到与原始信号 相同 %Au=1 d=[0.5*cos(2*pi*1000*t)]'; %噪声为1kHz的余弦信号 x2=x1+d; %sound(x1,8000); %pause(50); sound(x2,22050); %播放加噪声后的语音信号 y2=fft(x2,1024); figure(1) plot(t,x2) title('加噪后的信号'); xlabel('time n'); ylabel('fuzhi n'); figure(2) subplot(2,1,1); plot(f,abs(x1(1:512)));
title('原始语音信号频谱'); xlabel('Hz'); ylabel('fuzhi'); subplot(2,1,2); plot(f,abs(x2(1:512))); title('加噪后的信号频谱'); xlabel('Hz'); ylabel('fuzhi'); 实验效果
%将模拟指标转换成数字指标 %创建butterworth模拟滤波器 %用双线性变换法实现模拟滤波器到数字滤 %绘制频率响应曲线 (3)实验程序 fs=22050; x1=wavread('e:\威尼斯的泪.wav'); t=0:1/22050:(length(x1)-1)/22050; Au=0.5; d=[Au*cos(2*pi*8000*t)]';x2=x1+d; wp=0.25*pi;ws=0.3*pi; Rp=1;Rs=15; Fs=22050;Ts=1/Fs; wp1=2/Ts*tan(wp/2); ws1=2/Ts*tan(ws/2); [N,Wn]=buttord(wp1,ws1,Rp,Rs,'s'); %选择滤波器的最小阶数 [Z,P,K]=buttap(N); [Bap,Aap]=zp2tf(Z,P,K); [b,a]=lp2lp(Bap,Aap,Wn); [bz,az]=bilinear(b,a,Fs); 波器的转换 [H,W]=freqz(bz,az); figure(1) plot(W*Fs/(2*pi),abs(H)) grid xlabel('频率/Hz') ylabel('频率响应幅度') title('Butterworth') f1=filter(bz,az,x2); figure(2) subplot(2,1,1) plot(t,x2) title('滤波前的时域波形'); subplot(2,1,2) plot(t,f1); title('滤波后的时域波形'); sound(f1,22050); F0=fft(f1,1024); f=fs*(0:511)/1024; figure(3) y2=fft(x2,1024); subplot(2,1,1); plot(f,abs(y2(1:512))); title('滤波前的频谱') xlabel('Hz'); ylabel('fuzhi'); subplot(2,1,2) F1=plot(f,abs(F0(1:512))); title('滤波后的频谱') %画出滤波后的频谱图 %画出滤波前的时域图 %画出滤波后的时域图 %播放滤波后的信号 %画出滤波前的频谱图
xlabel('Hz'); ylabel('fuzhi'); 实验结果:
分享到:
收藏