matlab代码在最后,仅供参考。
高通滤波器设计
HP:fp=400Hz,fs=300Hz,Fs=1000Hz,αp=3dB,αs=35dB。
巴特沃斯高通滤波器设计
切比雪夫高通滤波器设计
带通滤波器设计
BP:fsl=200Hz,f1=300Hz,fsh=500Hz,f2=400Hz,Fs=2000Hz,αp=3dB,αs=40dB。
巴特沃斯带通滤波器![](https://i-blog.csdnimg.cn/blog_migrate/4b45b08bdb2df0da4ff98cd5e1894a92.png)
切比雪夫带通滤波器设计
%----------------------------------------------------------------------------
% To design IIR Butteworth Highpass DF by analog-lowpass,
% ---------------------------------------------------------------------------
clear all;
fp=400;fs=300;
%wp=[.19*pi 0.21*pi];ws=[.198*pi 0.202*pi];
Fs=1000;
rp=3;rs=35;
wp=fp*2*pi/Fs;ws=fs*2*pi/Fs;
%
% Firstly to finish frequency prewarping;
wap=2*Fs*tan(wp./2)
was=2*Fs*tan(ws./2);
[n,wn]=buttord(wap,was,rp,rs,'s');
% Note: 's'!
[z,p,k]=buttap(n);
[b,a]=zp2tf(z,p,k)
[bt,at]=lp2hp(b,a,wap)
%
% Note: z=(2/ts)(z-1)/(z+1);
[bz1,az1]=bilinear(bt,at,Fs)
[h,w]=freqz(bz1,az1,256,Fs);
figure
plot(w/500,20*log10(abs(h)))
title('巴特沃斯滤波器幅值谱')
xlabel('角频率{\omega}/{\pi}');
ylabel('幅值/dB');
figure
plot(w/500,(angle(h)))
title('巴特沃斯滤波器相位谱')
xlabel('角频率{\omega}/{\pi}');
ylabel('相位/rad');
%%
% % ----------------------------------------------------------------------------
% % to design a Chebyshev-I Highpass DF.
% % ----------------------------------------------------------------------------
clear all;
fp=400;fs=300;
%wp=[.19*pi 0.21*pi];ws=[.198*pi 0.202*pi];
Fs=1000;
rp=3;rs=35;
wp=fp*2*pi/Fs;ws=fs*2*pi/Fs;
%
%
% Firstly to finish frequency prewarping;
wap=2*Fs*tan(wp./2);
was=2*Fs*tan(ws./2);
[n,wn]=cheb1ord(wap,was,rp,rs,'s');
% Note: 's'!
[z,p,k]=cheb1ap(n,rp);
[bp,ap]=zp2tf(z,p,k)
[bs,as]=lp2hp(bp,ap,wap)
%
% Note: z=(2/Ts)(z-1)/(z+1);
[bz1,az1]=bilinear(bs,as,Fs)
[h,w]=freqz(bz1,az1,256,Fs);
figure
plot(w/500,20*log10(abs(h)))
title('切比雪夫波器幅值谱')
xlabel('角频率{\omega}/{\pi}');
ylabel('幅值/dB');
figure
plot(w/500,(angle(h)))
title('切比雪夫滤波器相位谱')
xlabel('角频率{\omega}/{\pi}');
ylabel('相位/rad');
%%
%----------------------------------------------------------------------------
% to test cheb1ord,cheb1ap,
% to design a Chebyshev-I Bandpass DF.
%----------------------------------------------------------------------------
clear all;
f1=300;f3=400;
fsl=200;fsh=500;
rp=3;rs=40;
Fs=2000;
%
wp1=2*pi*f1/Fs;
wp3=2*pi*f3/Fs;
wsl=2*pi*fsl/Fs;
wsh=2*pi*fsh/Fs;
wp=[wp1 wp3];ws=[wsl wsh];
%
% Firstly to finish frequency prewarping;
wap=2*Fs*tan(wp./2);
was=2*Fs*tan(ws./2);
[n,wn]=cheb1ord(wap,was,rp,rs,'s');
% Note: 's'!
[z,p,k]=cheb1ap(n,rp);
[bp,ap]=zp2tf(z,p,k)
bw=wap(2)-wap(1)
w0=sqrt(wap(1)*wap(2))
[bs,as]=lp2bp(bp,ap,w0,bw)
%
% Note: z=(2/Ts)(z-1)/(z+1);
[bz1,az1]=bilinear(bs,as,Fs)
[h,w]=freqz(bz1,az1,256,Fs);
figure
plot(w/1000,20*log10(abs(h)))
title('切比雪夫波器幅值谱')
xlabel('角频率{\omega}/{\pi}');
ylabel('幅值/dB');
figure
plot(w/1000,(angle(h)))
title('切比雪夫滤波器相位谱')
xlabel('角频率{\omega}/{\pi}');
ylabel('相位/rad');
%%
%----------------------------------------------------------------------------
% To design IIR Butteworth bandpass DF by analog-lowpass,
% ---------------------------------------------------------------------------
clear all;
fp=[300 400];fs=[200 500];
%wp=[.19*pi 0.21*pi];ws=[.198*pi 0.202*pi];
Fs=2000;
rp=3;rs=18;
wp=fp*2*pi/Fs;ws=fs*2*pi/Fs;
%
% Firstly to finish frequency prewarping;
wap=2*Fs*tan(wp./2)
was=2*Fs*tan(ws./2);
[n,wn]=buttord(wap,was,rp,rs,'s');
% Note: 's'!
[z,p,k]=buttap(n);
[b,a]=zp2tf(z,p,k)
bw=wap(2)-wap(1)
w0=sqrt(wap(1)*wap(2))
[bt,at]=lp2bp(b,a,w0,bw)
%
% Note: z=(2/ts)(z-1)/(z+1);
[bz1,az1]=bilinear(bt,at,Fs)
[h,w]=freqz(bz1,az1,256,Fs);
figure
plot(w/500,20*log10(abs(h)))
title('巴特沃斯滤波器幅值谱')
xlabel('角频率{\omega}/{\pi}');
ylabel('幅值/dB');
figure
plot(w/500,(angle(h)))
title('巴特沃斯滤波器相位谱')
xlabel('角频率{\omega}/{\pi}');
ylabel('相位/rad');