Overlapadd FIR polyphase interpolator
hm = mfilt.fftfirinterp(l,num,bl)
hm = mfilt.fftfirinterp
hm = mfilt.fftfirinterp(l,...)
hm = mfilt.fftfirinterp(l,num,bl)
returns
a discretetime FIR filter object that uses the overlapadd method
for filtering input data.
The input arguments are optional. To enter any optional value, you must include all optional values to the left of your desired value.
When you omit one or more input options, the omitted option applies the default values shown in the table below.
The number of FFT points is given by [bl+ceil(length(num)/l)1]
.
It is to your advantage to choose bl
such that
the number of FFT points is a power of two—using powers of
two can improve the efficiency of the FFT and the associated interpolation
process.
The following table describes the input arguments for creating hm
.
Input Argument  Description 

 Interpolation factor for the filter. 
 Vector containing the coefficients of the FIR lowpass
filter used for interpolation. When 
 Length of each block of input data used in the filtering. 
hm = mfilt.fftfirinterp
constructs
the filter using the default values for l
, num
,
and bl
.
hm = mfilt.fftfirinterp(l,...)
constructs
the filter using the input arguments you provide and defaults for
the argument you omit.
Every multirate filter object has properties that govern the
way it behaves when you use it. Note that many of the properties are
also input arguments for creating mfilt.fftfirinterp
objects.
The next table describes each property for an mfilt.fftfirinterp
filter
object.
Name  Values  Description 

 Reports the type of filter object. You cannot set this
property — it is always read only and results from your choice
of  
 Vector containing the coefficients of the FIR lowpass filter used for interpolation.  
 Interpolation factor for the filter. It specifies the amount to increase the input sampling rate. It must be an integer.  
 Length of each block of input data used in the filtering.  

 Determines whether the filter states are restored to
their starting values for each filtering operation. The starting values
are the values in place when you create the filter if you have not
changed the filter since you constructed it. 
 Stored conditions for the filter, including values for the interpolator states. 
Interpolation by a factor of 8. This object removes the spectral replicas in the signal after interpolation.
l = 8; % Interpolation factor hm = mfilt.fftfirinterp(l); % We use the default filter n = 8192; % Number of points hm.blocklength = n; % Set block length to number of points fs = 44.1e3; % Original sample freq: 44.1 kHz. n = 0:n1; % 0.1858 secs of data x = sin(2*pi*n*22e3/fs); % Original signal, sinusoid at 22 kHz y = filter(hm,x); % Interpolated sinusoid xu = l*upsample(x,8); % Upsample to comparethe spectrum % does not change [px,f]=periodogram(xu,[],65536,l*fs);% Power spectrum of original % signal [py,f]=periodogram(y,[],65536,l*fs); % Power spectrum of % interpolated signal plot(f,10*log10(([fs*px,l*fs*py]))) legend('22 kHz sinusoid sampled at 44.1 kHz',... '22 kHz sinusoid sampled at 352.8 kHz') xlabel('Frequency (Hz)'); ylabel('Power Spectrum');
To see the results of the example, look at this figure.
mfilt.cicinterp
 mfilt.firinterp
 mfilt.firsrc
 mfilt.holdinterp
 mfilt.linearinterp