Coupled allpass IIR filter

The `dsp.CoupledAllpassFilter`

object implements a coupled allpass filter
structure composed of two allpass filters connected in parallel. Each allpass branch can
contain multiple sections. The overall filter output is computed by adding the output of the
two respective branches. An optional second output can also be returned, which is power
complementary to the first. For example, from the frequency domain perspective, if the first
output implements a lowpass filter, the second output implements the power complementary
highpass filter. For real signals, the power complementary output is computed by subtracting
the output of the second branch from the first. `dsp.CoupledAllpassFilter`

supports double- and single-precision floating point and allows you to choose between
different realization structures. This System
object™ also supports complex coefficients, multichannel variable length input, and
tunable filter coefficient values.

To filter each channel of the input:

Create the

`dsp.CoupledAllpassFilter`

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

`caf = dsp.CoupledAllpassFilter`

`caf = dsp.CoupledAllpassFilter(AllpassCoeffs1,AllpassCoeffs2)`

`caf = dsp.CoupledAllpassFilter(struc,AllpassCoeffs1,AllpassCoeffs2)`

`caf = dsp.CoupledAllpassFilter(Name,Value)`

returns a
coupled allpass filter System
object, `caf`

= dsp.CoupledAllpassFilter`caf`

, that filters each channel of the input signal
independently. The coupled allpass filter uses the default inner structures and
coefficients.

returns a coupled allpass filter System
object, `caf`

= dsp.CoupledAllpassFilter(AllpassCoeffs1,AllpassCoeffs2)`caf`

, with `Structure`

set to
`'Minimum multiplier'`

, `AllpassCoefficients1`

set
to `AllpassCoeffs1`

, and `AllpassCoefficients2`

set to
`AllpassCoeffs2`

.

returns a coupled allpass filter System
object, `caf`

= dsp.CoupledAllpassFilter(struc,AllpassCoeffs1,AllpassCoeffs2)`caf`

, with `Structure`

set to
`struc`

and the relevant coefficients set to
`AllpassCoeffs1`

and `AllpassCoeffs2`

.
`struc`

can be `'Minimum multiplier'`

| ```
'Wave
Digital Filter'
```

| `'Lattice'`

.

`caf = dsp.CoupledAllpassFilter(`

returns a Coupled allpass filter System
object, `Name,Value`

)`caf`

, with each property set to the specified
value.

**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 = caf(x)`

`[y,ypc] = caf(x)`

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)

The following three figures summarize the main structures supported
by `dsp.CoupledAllpassFilter`

.

Minimum Multiplier and WDF

Lattice

Lattice with Complex Conjugate Coefficients

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

[2] Mitra, Sanjit K., and James F. Kaiser, *"Handbook
for Digital Signal Processing" * New York: John Wiley &
Sons, 1993.

`allpass2wdf`

|`coeffs`

|`cost`

|`freqz`

|`fvtool`

|`getBranches`

|`grpdelay`

|`impz`

|`info`