Decimate by factor of two using polyphase IIR

The `dsp.IIRHalfbandDecimator`

System
object™ performs efficient polyphase decimation 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 the `dsp.IIRHalfbandDecimator`

object to implement the
analysis portion of a two-band filter bank to filter a signal into lowpass and highpass
subbands.

To filter and downsample your data:

Create the

`dsp.IIRHalfbandDecimator`

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

`iirhalfbanddecim = dsp.IIRHalfbandDecimator`

`iirhalfbanddecim = dsp.IIRHalfbandDecimator(Name,Value)`

returns a halfband decimator, `iirhalfbanddecim`

= dsp.IIRHalfbandDecimator`iirhalfbanddecim`

, with the default
settings. Under the default settings, the System
object filters and downsamples the input data with a halfband frequency of
`22050`

Hz, a transition width of `4100`

Hz, and a
stopband attenuation of `80`

dB.

returns an IIR halfband decimator, with additional properties specified by one or more
`iirhalfbanddecim`

= dsp.IIRHalfbandDecimator(`Name,Value`

)`Name,Value`

pair arguments.

```
iirhalfbanddecim = dsp.IIRHalfbandDecimator('Specification','Filter
order and stopband attenuation')
```

creates an IIR halfband decimator 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.**

`ylow = iirhalfbanddecim(x)`

`[ylow,yhigh] = iirhalfbanddecim(x)`

`[`

computes the `ylow`

,`yhigh`

] = iirhalfbanddecim(`x`

)`ylow`

and `yhigh`

, of the analysis
filter bank, `iirhalfbanddecim`

for input `x`

. A
*Ki*-by-*N* input matrix is treated as
*N* independent channels. The System
object generates two power-complementary output signals by adding and subtracting
the two polyphase branch outputs respectively. `ylow`

and
`yhigh`

are of the same size
(*Ko*-by-*N*) and data type. *Ko* =
*Ki*/2, where `2`

is the decimation factor.

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.