diff --git a/common/include/villas/dsp/exponential_window.hpp b/common/include/villas/dsp/exponential_window.hpp new file mode 100644 index 000000000..8fea57d4f --- /dev/null +++ b/common/include/villas/dsp/exponential_window.hpp @@ -0,0 +1,53 @@ +/** An exponential window. + * + * @file + * @author Steffen Vogel + * @copyright 2014-2019, Institute for Automation of Complex Power Systems, EONERC + * @license GNU General Public License (version 3) + * + * VILLAScommon + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + *********************************************************************************/ + +#pragma once + +#include + +namespace villas { +namespace dsp { + +template +class ExponentialWindow { + +protected: + T a; + T last; + +public: + ExponentialWindow(T _a, T i = 0) : + a(a), + last(i) + { } + + T update(T in) + { + last = a * in + (1 - a) * last; + + return last; + } +}; + +} // namespace dsp +} // namespace villas