diff --git a/common/include/villas/dsp/window_cosine.hpp b/common/include/villas/dsp/window_cosine.hpp index 6f858f0c7..5571b896f 100644 --- a/common/include/villas/dsp/window_cosine.hpp +++ b/common/include/villas/dsp/window_cosine.hpp @@ -32,7 +32,9 @@ namespace villas { namespace dsp { -template + + +template// a0 = 1.0, double a1 = 0.0, double a2 = 0.0, double a3 = 0.0, double a4 = 0.0> class CosineWindow : public Window { public: @@ -50,7 +52,7 @@ protected: } public: - CosineWindow(size_type len, T i = 0) : + CosineWindow(double a0, double a1, double a2, double a3, double a4, size_type len, T i = 0) : Window(len, i), coefficients(len), correctionFactor(0) @@ -79,19 +81,44 @@ public: // From: https://en.wikipedia.org/wiki/Window_function#Cosine-sum_windows template -using HannWindow = CosineWindow; +class HannWindow : public CosineWindow { + +public: + HannWindow(typename Window::size_type len, T i = 0) : + CosineWindow(0.5, 0.5, 0., 0., 0., len, i) {} +}; template -using HammingWindow = CosineWindow; +class HammingWindow : public CosineWindow { + +public: + HammingWindow(typename Window::size_type len, T i = 0) : + CosineWindow(25./46, 1 - 25./46, 0., 0., 0., len, i) {} +}; template -using FlattopWindow = CosineWindow; // based on MATLAB coeffs +class FlattopWindow : public CosineWindow { + +public: + FlattopWindow(typename Window::size_type len, T i = 0) : + CosineWindow(0.21557895, 0.41663158, 0.277263158, 0.083578947, 0.006947368, len, i) {} +}; template -using NuttallWindow = CosineWindow; +class NuttallWindow : public CosineWindow { + +public: + NuttallWindow(typename Window::size_type len, T i = 0) : + CosineWindow(0.355768, 0.487396, 0.144232, 0.012604, 0., len, i) {} +}; template -using BlackmanWindow = CosineWindow; +class BlackmanWindow : public CosineWindow { + +public: + BlackmanWindow(typename Window::size_type len, T i = 0) : + CosineWindow(0.3635819, 0.4891775, 0.1365995, 0.0106411, 0., len, i) {} +}; } /* namespace dsp */ } /* namespace villas */