added low pass which only uses unit circle

This commit is contained in:
Ahmet Inan 2019-01-26 21:50:00 +01:00
commit 475114d2e1

View file

@ -8,6 +8,7 @@ Copyright 2018 Ahmet Inan <inan@aicodix.de>
#include "const.hh"
#include "utils.hh"
#include "unit_circle.hh"
namespace DSP {
@ -24,6 +25,22 @@ public:
}
};
template <typename TYPE>
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<TYPE>::sin((twox * num) % (2 * den), 2 * den) /
(Const<TYPE>::HalfPi() * fac * TYPE(twox));
}
};
template <typename TYPE>
class HighPass
{