Main Content

Interpolate by a factor of two using polyphase IIR

The `dsp.IIRHalfbandInterpolator`

System object™ performs efficient polyphase interpolation of the input signal by a factor of
two. To design the halfband filter, you can specify the object to use an elliptic design or a
quasi-linear phase design. The object uses these design methods to compute the filter
coefficients. To filter the inputs, the object uses a polyphase structure. The allpass filters
in the polyphase structure are in a minimum multiplier form.

Elliptic design introduces nonlinear phase and creates the filter using fewer coefficients than quasi linear design. Quasi-linear phase design overcomes phase nonlinearity at the cost of additional coefficients.

Alternatively, instead of designing the halfband filter using a design method, you can specify the filter coefficients directly. When you choose this option, the allpass filters in the two branches of the polyphase implementation can be in a minimum multiplier form or in a wave digital form.

You can also use `dsp.IIRHalfbandInterpolator`

object to implement the
synthesis portion of a two-band filter bank to synthesize a signal from lowpass and highpass
subbands.

To upsample and interpolate your data:

Create the

`dsp.IIRHalfbandInterpolator`

object and set its properties.Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?.

`iirhalfbandinterp = dsp.IIRHalfbandInterpolator`

returns an IIR
halfband interpolation filter, `iirhalfbandinterp`

, with the default
settings. Under the default settings, the System object upsamples and interpolates the input data using a halfband frequency of
`22050`

Hz, a transition width of `4100`

Hz, and a
stopband attenuation of `80`

dB.

returns an IIR halfband interpolator, with additional properties specified by one or more
`iirhalfbandinterp`

= dsp.IIRHalfbandInterpolator(`Name,Value`

)`Name,Value`

pair arguments.

```
iirhalfbandinterp =
dsp.IIRHalfbandInterpolator('Specification','Filter order and stopband
attenuation')
```

creates an IIR halfband interpolator object with filter order
set to `9`

and stopband attenuation set to `80`

dB.

implements a halfband synthesis filter bank for the inputs `y`

= iirhalfbandinterp(`x1`

,`x2`

)`x1`

and
`x2`

. `x1`

is the lowpass output of a halfband
analysis filter bank and `x2`

is the highpass output of a halfband
analysis filter bank. `dsp.IIRHalfbandInterpolator`

implements a synthesis
filter bank only when the `FilterBankInputPort`

property is
`true`

.

To use an object function, specify the
System object as the first input argument. For
example, to release system resources of a System object named `obj`

, use
this syntax:

release(obj)

[1] Lang, M. *Allpass Filter Design and Applications.* IEEE
Transactions on Signal Processing. Vol. 46, No. 9, Sept 1998, pp. 2505–2514.

[2] Harris, F.J. *Multirate Signal Processing for Communication
Systems*. Prentice Hall. 2004, pp. 208–209.

[3] Regalia, Phillip A., Sanjit K. Mitra, and P. P. Vaidyanathan. "The Digital All-Pass
Filter: A Versatile Signal Processing Building Block." *Proceedings of the
IEEE.* Vol. 76, Number 1, 1988, pp. 19-37.