by Forrest Sheng Bao http://fsbao.net
% Copyleft (C) Forrest Sheng Bao 1984-2009 http://fsbao.net
% with Dept. of Electrical and Computer Engineering and Dept. of Computer Science, Texas Tech University, Lubbock, Texas, USA
%
% This program shows the orders and frequency/phase properties of four different kinds of filters, Butterworth, Chebyshev Type I, Chebyshev Type II and Elliptic.
% The filter is expected to have a cutoff frequency at 200 Hz with attenuation 40 db/octave. The sampling frequency is 2000 Hz.
%
% This program licensed in GNU GENERAL PUBLIC LICENSE (GPL) v3 or later.
% If you do not know what GNU GPL is, please visit http://www.gnu.org/copyleft/gpl.html
close all clear all cutoff = 200; Fs = 2000; wp = cutoff/(Fs/2); ws = 400/(Fs/2); rp = 3; rs = 43; for i=1:4 if i == 1 [order, wn] = buttord(wp, ws, rp, rs); sprintf('the min. order of Butterworth filter is %d', order) [b,a] = butter(order,wn); figure() freqz(b,a,512,Fs) title('Butterworth filter, attenuation = 40 db/octave, cutoff=200') elseif i==2 [order, wn] = cheb1ord(wp, ws, rp, rs); sprintf('the min. order of Chebyshev Type 1 filter is %d', order) [b,a] = cheby1(order,rp,wn); figure() freqz(b,a,512,Fs) title('Chebyshev Type I filter, attenuation = 40 db/octave, cutoff=200') elseif i==3 [order, wn] = cheb2ord(wp, ws, rp, rs); sprintf('the min. order of Chebyshev Type II filter is %d', order) [b,a] = cheby2(order,rp,wn); figure() freqz(b,a,512,Fs) title('Chebyshev Type II filter, attenuation = 40 db/octave, cutoff=200') elseif i==4 [order, wn] = ellipord(wp, ws, rp, rs); sprintf('the min. order of elliptic filter is %d', order) [b,a] = ellip(order,rp,rs,wn); figure() freqz(b,a,512,Fs) title('Elliptic filter, attenuation = 40 db/octave, cutoff=200') else disp('error') end end
ans = the min. order of Butterworth filter is 7 ans = the min. order of Chebyshev Type 1 filter is 4 ans = the min. order of Chebyshev Type II filter is 4 ans = the min. order of elliptic filter is 3
Plot images are omitted here. Please run the code to get them.