| Filter Design Toolbox | ![]() |
Construct a direct-form FIR polyphase fractional interpolator filter object
Syntax
Description
hm = mfilt.firfracinterp(l,m,num)
returns a direct-form FIR polyphase fractional interpolator mfilt object. l is the interpolation factor. It must be an integer. If not specified, l defaults to 3.
m is the decimation factor. Like l, it must be an integer. If you do not specify m in the calling syntax, it defaults to 1. If l is also not specified, m defaults to 2.
num is a vector containing the coefficients of the FIR lowpass filter used for interpolation. If omitted, a low-pass Nyquist filter of gain l and cutoff frequency of
/max(l,m) is used by default.
By specifying both a decimation factor and an interpolation factor, you can interpolate your input signal by noninteger amounts. The fractional interpolator first interpolates the input, then decimates to result in an output signal whose sample rate is l/m of the input rate. For proper interpolation, you specify l to be greater than m. By default, the resulting decimation factor is 3/2 when you do not provide l and m in the calling syntax.
Input Arguments
The following table describes the input arguments for creating hm.
mfilt.firfracinterp Object Properties
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.firfracinterp objects.The next table describes each property for an mfilt.firfracinterp filter object.
Examples
To convert a signal from 32 KHz to 48 KHz requires fractional interpolation. This example uses the mfilt.firfracinterp object to upsample an input signal. Setting l = 3 and m = 2 returns the same mfilt object as the default mfilt.firfracinterp object.
l = 3; m = 2; % Interpolation/decimation factors. hm = mfilt.firfracinterp(l,m); % We use the default filter fs = 32e3; % Original sampling frequency: 32 KHz n = 0:6799; % 6800 samples, 0.212 second long signal x = sin(2*pi*1e3/fs*n); % Original signal, sinusoid at 1 KHz y = filter(hm,x); % 10200 samples, still 0.212 seconds stem(n(1:32)/fs,x(1:32),'filled') % Plot original sampled at % 32 KHz hold on; % Plot fractionally interpolated signal (48 KHz) in red stem(n(1:48)/(fs*l/m),y(20:67),'r') xlabel('Time (sec)');ylabel('Signal Value')
See Also
mfilt.firsrc, mfilt.firfracdecim, mfilt.interp, mfilt.decim
| mfilt.firfracdecim | mfilt.firinterp | ![]() |
Learn more about the latest releases of MathWorks products: |
| © 1994-2009 The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |