From 475114d2e126dfc19fcad35d5fe3a70c341f07b6 Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Sat, 26 Jan 2019 21:50:00 +0100 Subject: [PATCH] added low pass which only uses unit circle --- filter.hh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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 {