This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.


CIC filter gain




gain(hs) returns the gain of the filter System object™ hs. The function supports the dsp.CICDecimator and dsp.CICInterpolator filter structures.

When hs is a decimator, gain returns the gain for the overall CIC decimator.

When hs is an interpolator, the CIC interpolator inserts zeros into the input data stream, reducing the filter overall gain by 1/R, where R is the interpolation factor, to account for the added zero valued samples. Therefore, the gain of a CIC interpolator is (RM)N/R, where N is the number of filter sections and M is the filter differential delay. gain(hs) returns this value. The next example presents this case.

gain(hs,j) returns the gain of the jth section of a CIC interpolation filter. When you omit j, gain assumes that j is 2*N, where N is the number of sections, and returns the gain of the last section of the filter. This syntax does not apply when hs is a decimator.


collapse all

To compare the performance of two interpolators, one a CIC filter and the other an FIR filter, use gain to adjust the CIC filter output amplitude to match the FIR filter output amplitude. Start by creating an input data set, a sinusoidal signal x.

fs = 1000;          % Input sampling frequency.
t = 0:1/fs:1.5;     % Signal length = 1501 samples.
x = sin(2*pi*10*t); % Amplitude = 1 sinusoid.
x = x';

l = 4; % Interpolation factor for FIR filter.
d = fdesign.interpolator(l);
firInterp = design(d,'multistage','SystemObject',true);
yfir = firInterp(x);
r = 4; % Interpolation factor for the CIC filter.
d = fdesign.interpolator(r,'cic');
cicInterp = design(d,'multisection','SystemObject',true);
ycic = cicInterp(x);
gaincic = gain(cicInterp);
plot([yfir; double(ycic)]);
plot([yfir; double(ycic)/gain(cicInterp)]);

After correcting for the gain induced by the CIC interpolator, the second subplot shows that the FIR filter and the CIC filter provide nearly identical interpolation.

See Also

Introduced in R2011a

Was this topic helpful?