ylabel('频率幅值'); L=length(y)
noise=0.1*randn(L,2); y_z=y+noise; sound(y_z,fs) n=length(y); y_zp=fft(y_z,n); f=fs*(0:n/2-1)/n; figure(2)
subplot(2,1,1); plot(y_z);
title('加噪语音信号时域波形'); xlabel('频率点数') ylabel('幅值A') subplot(2,1,2);
plot(f,abs(y_zp(1:n/2)));
title('加噪语音信号频谱图'); xlabel('频率Hz'); ylabel('频率幅值'); %低通加窗滤波 fs=44100;
fp=600,fc=800; wp=2*pi*fp/fs; ws=2*pi*fc/fs;
Bt=ws-wp; N0=ceil(11*pi/Bt); N=N0+mod(N0+1,2);
wc=(wp+ws)/2/pi; hn=fir1(N-1,wc,bartlett(N)); X=conv(hn,x); sound(X,fs,bits); X1=fft(X,n); figure(4);
subplot(2,1,1); plot(X);
title('滤波后的信号波形'); subplot(2,1,2);
plot(f,abs(y_p(1:n/2))); title('滤波后信号频谱'); xlabel('频率Hz'); ylabel('频率幅值'); 结果如下图:
41
%FIR-Bartlett窗高通滤波
[y,fs,bits]=wavread('wangwei.wav'); x=y(:,1); sound(y,fs) n=length(y) y_p=fft(y,n); f=fs*(0:n/2-1)/n; figure(1)
subplot(2,1,1); plot(y);
title('原始语音信号采样后的时域波形'); xlabel('点数') ylabel('幅值A') subplot(2,1,2);
plot(f,abs(y_p(1:n/2)));
title('原始语音信号采样后的频谱图'); xlabel('点数');
ylabel('频率幅值'); L=length(y)
noise=0.1*randn(L,2); y_z=y+noise; sound(y_z,fs) n=length(y); y_zp=fft(y_z,n); f=fs*(0:n/2-1)/n;
42
figure(2)
subplot(2,1,1); plot(y_z);
title('加噪语音信号时域波形'); xlabel('点数') ylabel('幅值A') subplot(2,1,2);
plot(f,abs(y_zp(1:n/2)));
title('加噪语音信号频谱图'); xlabel('点数');
ylabel('频率幅值'); %FIR高通加窗滤波
fp=3000,fc=2700; wp=2*pi*fp/fs; ws=2*pi*fc/fs;
Bt=wp-ws; N0=ceil(11*pi/Bt); N=N0+mod(N0+1,2);
wc=(wp+ws)/2/pi;
hn=fir1(N-1,wc,'high',bartlett(N)); X=conv(hn,x); sound(X,fs,bits); X1=fft(X,n); f=fs*(0:n/2-1)/n; figure(3);
subplot(2,1,1); plot(X);
title('滤波后的信号波形'); subplot(2,1,2);
plot(f,abs(X1(1:n/2))); title('滤波后信号频谱'); xlabel('点数');
ylabel('频率幅值');
运行结果如下图:
43
%IIR低通滤波
[y,fs,bits]=wavread('wangwei.wav'); sound(y,fs) n=length(y) y_p=fft(y,n); f=fs*(0:n/2-1)/n; figure(1)
subplot(2,1,1); plot(y);
title('原始语音信号采样后的时域波形'); xlabel('点数') ylabel('幅值A') subplot(2,1,2);
plot(f,abs(y_p(1:n/2)));
title('原始语音信号采样后的频谱图'); xlabel('点数');
ylabel('频率幅值'); L=length(y)
noise=0.1*randn(L,2); y_z=y+noise; sound(y_z,fs) n=length(y); y_zp=fft(y_z,n); f=fs*(0:n/2-1)/n; figure(2)
subplot(2,1,1);
44
plot(y_z);
title('加噪语音信号时域波形'); xlabel('点数') ylabel('幅值A') subplot(2,1,2);
plot(f,abs(y_zp(1:n/2)));
title('加噪语音信号频谱图'); xlabel('点数');
ylabel('频率幅值');
fp=600;fs=800;Fs=44100; rp=1;rs=10; wp=2*pi*fp/Fs; ws=2*pi*fs/Fs; Fs1=1;
wap=2*tan(wp/2); was=2*tan(ws/2);
[N,wc]=buttord(wap,was,rp,rs,'s'); [B,A]=butter(N,wc,'s'); [Bz,Az]=bilinear(B,A,Fs1); figure(3);
[h,w]=freqz(Bz,Az,512,Fs1*44100); plot(w,abs(h));
title('巴特沃斯低通滤波器');
xlabel('频率(HZ)');ylabel('耗损(dB)'); grid on;
yd=filter(Bz,Az,y_z); ydd=fft(yd,n); f=fs*(0:n/2-1)/n; figure(4);
subplot(2,1,1);plot(yd); title('滤波后信号时域波形'); xlabel('点数') ylabel('幅值A') subplot(2,1,2);
plot(f,abs(ydd(1:n/2))); title('滤波后信号频谱'); xlabel('点数');
ylabel('频率幅值'); sound(yd,Fs,bits);
运行结果如图:
45