Examples
To introduce a few of the variations on FIR filters that you
design with firceqrip, these five examples cover
both the default syntax b = firceqrip(n,wo,del) and
some of the optional input arguments. For each example, the input
arguments n, wo, and del remain
the same.
Filter design using firceqrip
Design a 30th order FIR filter using firceqrip.
b = firceqrip(30,0.4,[0.05 0.03]); fvtool(b)
Design a 30th order FIR filter with the stopedge keyword to define the response at the edge of the filter stopband.
b = firceqrip(30,0.4,[0.05 0.03],'stopedge'); fvtool(b)
Design a 30th order FIR filter with the slope keyword and r = 20.
b = firceqrip(30,0.4,[0.05 0.03],'slope',20,'stopedge'); fvtool(b)
Design a 30th order FIR filter defining the stopband and specifying that the resulting filter is minimum phase with the min keyword.
b = firceqrip(30,0.4,[0.05 0.03],'stopedge','min'); fvtool(b)
Comparing this filter to the filter in Figure 1. The cutoff frequency wo = 0.4 now applies to the edge of the stopband rather than the point at which the frequency response magnitude is 0.5.
Viewing the zero-pole plot shown here reveals this is a minimum phase FIR filter - the zeros lie on or inside the unit circle, z = 1
fvtool(b,'polezero')
Design a 30th order FIR filter with the invsinc keyword to shape the filter passband with an inverse sinc function.
b = firceqrip(30,0.4,[0.05 0.03],'invsinc',[2 1.5]); fvtool(b)
The inverse sinc function being applied is defined as 1/sinc(2*w)^1.5.
Inverse-Dirichlet-Sinc-Shaped Passband
Design two order 30 constrained equiripple FIR filters with inverse-Dirichlet-sinc-shaped passbands. The cutoff frequency in both designs is pi/4 radians/sample. Set C=1 in one design C=2 in the second design. The maximum passband and stopband ripple is 0.05. Set p=1 in one design and p=2 in the second design.
Design the filters.
b1 = firceqrip(30,0.25,[0.05 0.05],'invdiric',[1 1]);
b2 = firceqrip(30,0.25,[0.05 0.05],'invdiric',[2 2]);
Obtain the filter frequency responses using freqz. Plot the magnitude responses.
[h1,~] = freqz(b1,1);
[h2,w] = freqz(b2,1);
plot(w,abs(h1)); hold on;
plot(w,abs(h2),'r');
axis([0 pi 0 1.5]);
xlabel('Radians/sample');
ylabel('Magnitude');
legend('C=1 p=1','C=2 p=2');
Inspect the stopband ripple in the design with C=1 and p=1. The constrained design sets the maximum ripple to be 0.05. Zoom in on the stopband from the cutoff frequency of pi/4 radians/sample to 3pi/4 radians/sample.
figure;
plot(w,abs(h1));
set(gca,'xlim',[pi/4 3*pi/4]);
grid on;