当前位置:首页 > 应用Matlab对含噪声语音信号进行频谱分析及滤波
2、加入噪声
y=wavread('C:\\Users\\acer\\Desktop\\');
y=y(:,1); %矩阵维度置换成1 subplot(2,2,1); plot(y);
title('加噪前的时域曲线');
N=length(y)-1; n=0:1/fs:N/fs;
x=*sin(40*pi*n); %设置正弦噪声信号 x=x.'; %置换成矩阵 z=y+x; %添加噪声 subplot(2,2,2); plot(z);
title('加噪后的时域曲线'); sound(z,40000)
3、IIR滤波器设计
clc;clear;close all;
fs=22050;x1=wavread('C:\\Users\\acer\\Desktop\\'); x1=x1(:,1)
t=0:1/22050:(size(x1)-1)/22050; %设置并添加噪声信号 d=*sin(40*pi*t); d=d.'; x2=x1+d;
wp=*pi;ws=*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); %创建butterworth模拟滤波器
[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,40000); %播放滤波后的信号 F0=fft(f1,10240);f=fs*(0:255)/10240
figure(3) y2=fft(x2,10240);
subplot(2,1,1);plot(f,abs(y2(1:256))); %画出滤波前的频谱图 title('滤波前的频谱');xlabel('Hz');ylabel('fuzhi');
subplot(2,1,2);F1=plot(f,abs(F0(1:256))); %画出滤波后的频谱图 title('滤波后的频谱');xlabel('Hz');ylabel('fuzhi');
共分享92篇相关文档