filter_iir

IIR filter, direct form I implementation, not recommanded (use rather filter_sois() instead).

Namespace: dsp::filter

Prototype

sptr<FilterGen<T>> filter_iir(const FRat<Tc> &h)

Parameters

hTransfert function (rational function)

Returns

Filter T -> T

Description

This filmter implements an IIR filter, using the most direct form (direct I), that is, the filter is decomposed as: \[ H(z) = \frac{b_0 + b_1 z^{-1} + \dots}{a_0 + a_1 z^{-1} + \dots} = \left(b_0 + b_1 z^{-1} + \dots\right) \cdot \frac{1}{a_0 + a_1 z^{-1} + \dots} \] and the FIR filter corresponding to the numerator is computed first, then the all-poles RII filter corresponding to the denominator.

Warning
If the filter order is large, because of truncation errors, this implementation a a lot of chance to diverge. The alternative implementation through a cascade of second order RII filters (filter_sois()) is then recommanded.

See also

filter_sois()