diff --git a/filter.hh b/filter.hh index c841f23..072eaa5 100644 --- a/filter.hh +++ b/filter.hh @@ -8,6 +8,7 @@ Copyright 2018 Ahmet Inan #include "const.hh" #include "utils.hh" +#include "unit_circle.hh" namespace DSP { @@ -24,6 +25,22 @@ public: } }; +template +class LowPass2 +{ + int num, den; + TYPE fac; +public: + LowPass2(int num, int den) : num(num), den(den), fac(TYPE(2*num)/TYPE(den)) {} + TYPE operator () (int n, int N) + { + int twox = 2 * n - (N - 1); + return !twox ? fac : fac * + UnitCircle::sin((twox * num) % (2 * den), 2 * den) / + (Const::HalfPi() * fac * TYPE(twox)); + } +}; + template class HighPass {