www.gusucode.com > signal 案例源码程序 matlab代码 > signal/AnalogIIRLowpassFiltersExample.m

    %% Comparison of Analog IIR Lowpass Filters

%%
% Design a 5th-order analog Butterworth lowpass filter with a cutoff
% frequency of 2 GHz. Multiply by $2\pi$ to convert the frequency to
% radians per second. Compute the frequency response of the filter at 4096
% points.

n = 5;
f = 2e9;

[zb,pb,kb] = butter(n,2*pi*f,'s');
[bb,ab] = zp2tf(zb,pb,kb);
[hb,wb] = freqs(bb,ab,4096);

%%
% Design a 5th-order Chebyshev Type I filter with the same edge frequency
% and 3 dB of passband ripple. Compute its frequency response.

[z1,p1,k1] = cheby1(n,3,2*pi*f,'s');
[b1,a1] = zp2tf(z1,p1,k1);
[h1,w1] = freqs(b1,a1,4096);

%%
% Design a 5th-order Chebyshev Type II filter with the same edge
% frequency and 30 dB of stopband attenuation. Compute its frequency
% response.

[z2,p2,k2] = cheby2(n,30,2*pi*f,'s');
[b2,a2] = zp2tf(z2,p2,k2);
[h2,w2] = freqs(b2,a2,4096);

%%
% Design a 5th-order elliptic filter with the same edge frequency, 3 dB
% of passband ripple, and 30 dB of stopband attenuation. Compute its
% frequency response.

[ze,pe,ke] = ellip(n,3,30,2*pi*f,'s');
[be,ae] = zp2tf(ze,pe,ke);
[he,we] = freqs(be,ae,4096);

%%
% Plot the attenuation in decibels. Express the frequency in gigahertz.
% Compare the filters.

plot(wb/(2e9*pi),mag2db(abs(hb)))
hold on
plot(w1/(2e9*pi),mag2db(abs(h1)))
plot(w2/(2e9*pi),mag2db(abs(h2)))
plot(we/(2e9*pi),mag2db(abs(he)))
axis([0 4 -40 5])
grid
xlabel('Frequency (GHz)')
ylabel('Attenuation (dB)')
legend('butter','cheby1','cheby2','ellip')

%%
% The Butterworth and Chebyshev Type II filters have flat passbands and
% wide transition bands. The Chebyshev Type I and elliptic filters roll off
% faster but have passband ripple. The frequency input to the Chebyshev
% Type II design function sets the beginning of the stopband rather than
% the end of the passband.