matlab巴特沃斯滤波器用法

基于matlab 的数字滤波器



clear
clc
fs = 22050;
wp=0.1*pi;%通带截止频率
ws=0.4*pi;%阻带截止频率
Rp=3;%通带衰减率
Rs=75;%阻带衰减率
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');  %选择滤波器的最小阶数,求出3db的截止频率
[Z,P,K]=buttap(N);                  %创建butterworth模拟滤波器,零点,极点,增益
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);   
[bd,ad]=bilinear(b,a,Fs);      %用双线性变换法实现模拟滤波器到数字滤波器的转换
[h,w]=freqz(bd,ad); 
figure(1)
subplot(111);
plot(w*fs/(2*pi),abs(h))
grid;
title('滤波器的性能分析'); 
figure(2)
[x,fs]=audioread('wslhjz.wav');
n=length(x);
f=fs*(0:fix(n/2-1))/n;%归一化
X=fft(x);
z=filter(bd,ad,x);
subplot(211);
plot(x);
title('原始信号的波形');
subplot(212);
plot(z);
title('滤波后信号的波形'); 
figure(3)
sound(z,fs);
subplot(211);
plot(f,abs(X(1:fix(n/2))));
title('原始信号的频谱');
xlabel('Hz');
Z=fft(z);
subplot(212);
plot(f,abs(Z(1:fix(n/2)))); 
title('滤波后的信号频谱');
xlabel('Hz');


你可能感兴趣的:(matlab巴特沃斯滤波器用法)