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? (MATLAB).

`iirhalfbandinterp = dsp.IIRHalfbandInterpolator`

`iirhalfbandinterp = dsp.IIRHalfbandInterpolator(Name,Value)`

`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.**For versions earlier than R2016b, use the step
function to run the System object algorithm. The arguments to
step are the object you created, followed by
the arguments shown in this section.**

**For example, y = step(obj,x) and y = obj(x) perform equivalent operations.**

`y = iirhalfbandinterp(x1)`

`y = iirhalfbandinterp(x1,x2)`

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.