#include <Filters/BiQuad.hpp>
BiQuad filter Direct Form 1 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 NormalizingBiQuadFilterDF1, but it works better for integer types, because it has no rounding error on the coefficients.
Implements the following difference equation:
\[ y[n] = \frac{b_0 \cdot x[n] + b_1 \cdot x[n-1] + b_2 \cdot x[n-2] - a_1 \cdot y[n-1] - a_2 \cdot y[n-2]}{a_0} \]
Definition at line 124 of file BiQuad.hpp.
Public Member Functions | |
NonNormalizingBiQuadFilterDF1 ()=default | |
NonNormalizingBiQuadFilterDF1 (const AH::Array< T, 3 > &b, const AH::Array< T, 3 > &a) | |
NonNormalizingBiQuadFilterDF1 (const BiQuadCoefficients< T > &coefficients) | |
NonNormalizingBiQuadFilterDF1 (const AH::Array< T, 3 > &b, const AH::Array< T, 3 > &a, T gain) | |
NonNormalizingBiQuadFilterDF1 (const BiQuadCoefficients< T > &coefficients, T gain) | |
T | operator() (T input) |
Update the internal state with the new input \( x[n] \) and return the new output \( y[n] \). More... | |
Static Public Member Functions | |
template<bool Enable = true> | |
static std::enable_if_t< std::is_floating_point< T >::value &&Enable, T > | update (T input, AH::Array< T, 2 > &x, AH::Array< T, 2 > &y, const AH::Array< T, 3 > &b, const AH::Array< T, 2 > &a, T a0) |
template<bool Enable = true> | |
static std::enable_if_t<!std::is_floating_point< T >::value &&Enable, T > | update (T input, AH::Array< T, 2 > &x, AH::Array< T, 2 > &y, const AH::Array< T, 3 > &b, const AH::Array< T, 2 > &a, T a0) |
Private Attributes | |
AH::Array< T, 2 > | x = {{}} |
Previous inputs. More... | |
AH::Array< T, 2 > | y = {{}} |
Previous outputs. More... | |
AH::Array< T, 3 > | b = {{}} |
Numerator coefficients. More... | |
AH::Array< T, 2 > | a = {{}} |
Denominator coefficients. More... | |
T | a0 = T(1.) |
First denominator coefficient. More... | |
|
default |
|
inline |
Definition at line 128 of file BiQuad.hpp.
|
inline |
Definition at line 132 of file BiQuad.hpp.
|
inline |
Definition at line 135 of file BiQuad.hpp.
|
inline |
Definition at line 139 of file BiQuad.hpp.
|
inlinestatic |
Definition at line 145 of file BiQuad.hpp.
|
inlinestatic |
Definition at line 161 of file BiQuad.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 183 of file BiQuad.hpp.
|
private |
Previous inputs.
Definition at line 186 of file BiQuad.hpp.
|
private |
Previous outputs.
Definition at line 187 of file BiQuad.hpp.
|
private |
Numerator coefficients.
Definition at line 188 of file BiQuad.hpp.
|
private |
Denominator coefficients.
Definition at line 189 of file BiQuad.hpp.
|
private |
First denominator coefficient.
Definition at line 190 of file BiQuad.hpp.