Products & Services Solutions Academia Support User Community Company

Learn more about Filter Design Toolbox   

Example Case for Multirate/Multistage Filters

Example Overview

This brief example shows the efficiency gains that are possible when using multirate and multistage filters for certain applications. In this case a distinct advantage is achieved over regular linear-phase equiripple design when a narrow transition-band width is required. A more detailed treatment of the key points made here can be found in the demo entitled "Efficient Narrow Transition-Band FIR Filter Design".

Single-Rate/Single-Stage Equiripple Design

Consider the following design specifications for a lowpass filter (where the ripples are given in linear units):

Fpass = 0.13;   % Passband edge
Fstop = 0.14;   % Stopband edge
Rpass = 0.001;  % Passband ripple, 0.0174 dB peak to peak
Rstop = 0.0005; % Stopband ripple, 66.0206 dB minimum attenuation

Hf = fdesign.lowpass(Fpass,Fstop,Rpass,Rstop,'linear');

A regular linear-phase equiripple design using these specifications can be designed by evaluating the following:

Hd = design(Hf,'equiripple');

When you determine the cost of this design, you can see that 694 multipliers are required.

cost(Hd)
 
ans =
 
Number of Multipliers : 694
Number of Adders      : 693
Number of States      : 693
MultPerInputSample    : 694
AddPerInputSample     : 693

Reducing Computational Cost Using Mulitrate/Multistage Design

The number of multipliers required by a filter using a single state, single rate equiripple design is 694. This number can be reduced using multirate/multistage techniques. In any single-rate design, the number of multiplications required by each input sample is equal to the number of non-zero multipliers in the implementation. However, by using a multirate/multistage design, decimation and interpolation can be combined to lessen the computation required. For decimators, the average number of multiplications required per input sample is given by the number of multipliers divided by the decimation factor.

Hd_multi = design(Hf,'multistage');

You can then view the cost of the filter created using this design step, and you can see that a significant cost advantage has been achieved.

>> cost(Hd_multi)
 
ans =
 
Number of Multipliers : 392    
Number of Adders      : 383    
Number of States      : 348    
MultPerInputSample    : 72.3333
AddPerInputSample     : 70.1667

Comparing the Response

You can compare the responses of the equiripple design and this multirate/multistage design using fvtool:

hfvt = fvtool(Hd,Hd_multi);
legend(hfvt,'Equiripple design', 'Multirate/multistage design')

Notice that the stopband attenuation for the multistage design is about twice that of the other designs. This is because the decimators must attenuate out-of-band components by 66 dB in order to avoid aliasing that would violate the specifications. Similarly, the interpolators must attenuate images by 66 dB. You can also see that the passband gain for this design is no longer 0 dB, because each interpolator has a nominal gain (in linear units) equal to its interpolation factor, and the total interpolation factor for the three interpolators is 6.

Further Performance Comparison

You can check the performance of the multirate/multistage design by plotting the power spectral densities of the input and the various outputs, and you can see that the sinusoid at is attenuated comparably by both the equiripple design and the multirate/multistage design.

n       = 0:1799;
x       = sin(0.1*pi*n') + 2*sin(0.15*pi*n');
y       = filter(Hd,x);
y_multi = filter(Hd_multi,x);
[Pxx,w]   = periodogram(x);
Pyy       = periodogram(y);
Pyy_multi = periodogram(y_multi);
plot(w/pi,10*log10([Pxx,Pyy,Pyy_multi]));
xlabel('Normalized Frequency (x\pi rad/sample)');
ylabel('Power density (dB/rad/sample)');
legend('Input signal PSD','Equiripple output PSD',...
    'Multirate/multistage output PSD')
axis([0 1 -50 30])
grid on

  


Free Early Verification Kit

Learn how to apply early verification to your development process through these technical resources.

How much time do you spend on testing to ensure implementation meets system-level requirements?

 © 1984-2009- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS