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

    %% Multiband FIR Filter
% Design a 46th-order FIR filter that attenuates normalized frequencies
% below $0.4\pi$ rad/sample and between $0.6\pi$ and $0.9\pi$ rad/sample.
% Call it |bM|.

%%

ord = 46;

low = 0.4;
bnd = [0.6 0.9];

bM = fir1(ord,[low bnd]);

%%
% Redesign |bM| so that it passes the bands it was attenuating and stops
% the other frequencies. Call the new filter |bW|. Use |fvtool| to display
% the frequency responses of the filters.

bW = fir1(ord,[low bnd],'DC-1');

hfvt = fvtool(bM,1,bW,1);
legend(hfvt,'bM','bW')

%%
% Redesign |bM| using a Hann window. (The |'DC-0'| is optional.) Compare
% the magnitude responses of the Hamming and Hann designs.

hM = fir1(ord,[low bnd],'DC-0',hann(ord+1));

hfvt = fvtool(bM,1,hM,1);
legend(hfvt,'Hamming','Hann')

%%
% Redesign |bW| using a Tukey window. Compare the magnitude responses of
% the Hamming and Tukey designs.

tW = fir1(ord,[low bnd],'DC-1',tukeywin(ord+1));

hfvt = fvtool(bW,1,tW,1);
legend(hfvt,'Hamming','Tukey')