www.gusucode.com > dsp 案例源码程序 matlab代码 > dsp/ImpulseAndFrequencyResponseOfFIRLowpassFilterExample.m
%% Impulse and Frequency Response of FIR and IIR Lowpass Filters % Create a minimum order FIR lowpass filter for data sampled at 44.1 kHz. % Specify a passband frequency of 8 kHz, a stopband frequency of 12 kHz, % a passband ripple of 0.1 dB, and a stopband attenuation of 80 dB. % Copyright 2015 The MathWorks, Inc. Fs = 44.1e3; filtertype = 'FIR'; Fpass = 8e3; Fstop = 12e3; Rp = 0.1; Astop = 80; FIRLPF = dsp.LowpassFilter('SampleRate',Fs,... 'FilterType',filtertype,... 'PassbandFrequency',Fpass,... 'StopbandFrequency',Fstop,... 'PassbandRipple',Rp,... 'StopbandAttenuation',Astop); %% % Design a minimum order IIR lowpass filter with the same properties as the % FIR lowpass filter. % Use |clone| to create a system object with the same properties as the % FIR lowpass filter. Change the |FilterType| property of the cloned filter to |IIR|. IIRLPF = clone(FIRLPF); IIRLPF.FilterType = 'IIR'; %% % Plot the impulse response of the FIR lowpass filter. The zeroth order % coefficient is delayed by 19 samples, which is equal to the group delay % of the filter. The FIR lowpass filter is a causal FIR filter. fvtool(FIRLPF,'Analysis','impulse') %% % Plot the impulse response of the IIR lowpass filter. fvtool(IIRLPF,'Analysis','impulse') %% % Plot the magnitude and phase response of the FIR lowpass filter. fvtool(FIRLPF,'Analysis','freq') %% % Plot the magnitude and phase response of the IIR lowpass filter. fvtool(IIRLPF,'Analysis','freq') %% % Calculate the cost of implementing the FIR lowpass filter. cost(FIRLPF) %% % Calculate the cost of implementing the IIR lowpass filter. The IIR % filter is more efficient to implement than its FIR counterpart. cost(IIRLPF) %% % Calculate the group delay of the FIR lowpass filter. grpdelay(FIRLPF) %% % Calculate the group delay of the IIR lowpass filter. The FIR filter has a constant % group delay (linear phase), while its IIR counterpart does not. grpdelay(IIRLPF)