gusucode.com > MATLAB下的语音信号处理,采用是巴特沃斯低通滤波器源码程序 > Filter2.m
function[]=Filter2(); [x,fs,bits]=wavread('bluetooth_input');%播放原始信号 N=length(x);%返回采样点数 t=(1:N)/fs; df=fs/N;%采样间隔 n1=1:N/2; f=(n1-1)*df;%频带宽度 y1=x+0.01*randn(size(x));%加入均匀白噪声 %************************巴特沃斯滤波器设计***************************** FS=1; %通带、阻带截止频率 Fl=0.08;Fh=0.15; %频率预畸 wp=(Fl/FS)*2*pi; %临界频率采用角频率表示 ws=(Fh/FS)*2*pi; %临界频率采用角频率表示 OmegaP=2*FS*tan(wp/2); OmegaS=2*FS*tan(ws/2); [k,Wn]=buttord(OmegaP,OmegaS,1.1,60,'s'); [b,a]=butter(k,Wn,'s'); %freqs(b,a) %设计模拟的 [bz,az]=bilinear(b,a,FS); %映射为数字的 % 绘制结果 H=freqz(bz,az,1024,FS,'whole'); figure(8); plot(abs(H)); title('巴特沃斯滤波器的频率响应'); %********************************************************************** ys=filter(bz,az,y1);%信号送入滤波器滤波,ys为输出 fftwave=fft(ys);%将滤波后的语音信号进行快速傅立叶变换 figure(9); plot(f,20*log10(abs(fftwave(n1)))); title('巴特沃斯滤波器滤波后信号的频谱图'); xlabel('频率/Hz'); ylabel('幅值/db'); grid; wavwrite(ys,fs,'d:\cc2.wav');%把滤波后的信号写入d:\cc2.wav中 [v,fs,bits]=wavread('d:\cc2.wav');%语音回放 wavplay(v,fs);