#include <Filters/IIRFilter.hpp>
Infinite Impulse Response filter implementation that does not normalize the coefficients upon initialization, the division by \( a_0 \) is carried out on each filter iteration.
This class is slower than NormalizingIIRFilter, but it works better for integer types, because it has no rounding error on the coefficients.
Implements the following difference equation using the Direct-Form 1 implementation:
\[ y[n] = \frac{1}{a_0} \left(\sum_{i=0}^{N_b-1} b_i \cdot x[n-i] - \sum_{i=1}^{N_a-1} a_i \cdot y[n-i] \right) \]
Definition at line 27 of file IIRFilter.hpp.
Public Member Functions | |
NonNormalizingIIRFilter (const AH::Array< T, NB > &b_coefficients, const AH::Array< T, NA > &a_coefficients) | |
Construct a new Non-Normalizing IIR Filter object. More... | |
NonNormalizingIIRFilter (const TransferFunction< NB, NA, T > &tf) | |
T | operator() (T input) |
Update the internal state with the new input \( x[n] \) and return the new output \( y[n] \). More... | |
Private Attributes | |
uint8_t | index_b = 0 |
uint8_t | index_a = 0 |
AH::Array< T, NB > | x = {} |
Previous inputs. More... | |
AH::Array< T, MA > | y = {} |
Previous outputs. More... | |
AH::Array< T, 2 *NB - 1 > | b_coefficients |
Numerator coefficients. More... | |
AH::Array< T, 2 *MA - 1 > | a_coefficients |
Denominator coefficients. More... | |
T | a0 |
Static Private Attributes | |
static constexpr uint8_t | MA = NA - 1 |
|
inline |
Construct a new Non-Normalizing IIR Filter object.
The coefficients \( b \) and \( a \) can be derived from the transfer function:
\[ H(z) = \frac{b_0 + b_1 z^{-1} + \ldots + b_{N_b} z ^{-N_b}} {a_0 + a_1 z^{-1} + \ldots + a_{N_b} z ^{-N_a}} \]
b_coefficients | The coefficients of the transfer function numerator. |
a_coefficients | The coefficients of the transfer function denominator. |
Definition at line 45 of file IIRFilter.hpp.
|
inline |
Definition at line 54 of file IIRFilter.hpp.
|
inline |
Update the internal state with the new input \( x[n] \) and return the new output \( y[n] \).
input | The new input \( x[n] \). |
Definition at line 65 of file IIRFilter.hpp.
|
staticconstexprprivate |
Definition at line 99 of file IIRFilter.hpp.
|
private |
Definition at line 100 of file IIRFilter.hpp.
|
private |
Definition at line 100 of file IIRFilter.hpp.
|
private |
Previous inputs.
Definition at line 101 of file IIRFilter.hpp.
|
private |
Previous outputs.
Definition at line 102 of file IIRFilter.hpp.
|
private |
Numerator coefficients.
Definition at line 103 of file IIRFilter.hpp.
|
private |
Denominator coefficients.
Definition at line 104 of file IIRFilter.hpp.
|
private |
Definition at line 105 of file IIRFilter.hpp.