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);