# Documentation

### This is machine translation

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

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

# mfilt.firfracinterp (Obsolete)

Direct-form FIR polyphase fractional interpolator

## Syntax

```hm = mfilt.firfracinterp(l,m,num) ```

## Description

`mfilt.firfracinterp` will be removed in a future release. Use `mfilt.firsrc` instead.

`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 you also do not specify a value for `l`, `m` defaults to 2.

`num` is a vector containing the coefficients of the FIR lowpass filter used for interpolation. If omitted, a lowpass 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 interpolation 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`.

Input Argument

Description

`l`

Interpolation factor for the filter. `l` specifies the amount to increase the input sampling rate. It must be an integer. When you do not specify a value for `l` it defaults to 3.

`num`

Vector containing the coefficients of the FIR lowpass filter used for interpolation. When `num` is not provided as an input, `firfracinterp` uses a lowpass Nyquist filter with gain equal to `l` and cutoff frequency equal to π/`max`(`l`,`m`) by default.

`m`

Decimation factor for the filter. `m` specifies the amount to reduce the sampling rate of the input signal. It must be an integer. When you do not specify a value for `m` it defaults to 1. When you do not specify `l` as well, `m` defaults to 2.

### 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.

Name

Values

Description

`FilterStructure`

Reports the type of filter object. You cannot set this property — it is always read only and results from your choice of `mfilt` object.

`Numerator`

Vector containing the coefficients of the FIR lowpass filter used for interpolation.

`RateChangeFactors`

[`l`,`m`]

Reports the decimation (`m`) and interpolation (`l`) factors for the filter object. Combining these factors results in the final rate change for the signal.

`PersistentMemory`

`false` or `true`

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. `PersistentMemory` returns to the default values any state that the filter changes during processing. States that the filter does not change are not affected.

`States`

Matrix

Stored conditions for the filter, including values for the interpolator and comb states.

## 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 sample freq: 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')```

The ability to interpolate by fractional amounts lets you raise the sampling rate from 32 to 48 kHz, something you cannot do with integral interpolators. Both signals appear in the following figure.