diff --git a/src/utils/moving_average.hpp b/src/utils/moving_average.hpp index 1a9bff0..fe4d337 100644 --- a/src/utils/moving_average.hpp +++ b/src/utils/moving_average.hpp @@ -1,47 +1,51 @@ #ifndef SPECMICP_UTILS_MOVINGAVERAGE_HPP #define SPECMICP_UTILS_MOVINGAVERAGE_HPP #include "common.hpp" namespace specmicp { namespace utils { //! \brief Exponential moving average //! //! https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average //! //! @param alpha coefficient between 0 and 1 //! @param init initial value of the average class ExponentialMovingAverage { public: ExponentialMovingAverage(scalar_t alpha, scalar_t init): m_alpha(alpha), m_current_value(init) { } //! \brief Add a point in the series, return current average value scalar_t add_point(scalar_t value){ m_current_value = m_alpha*value + (1-m_alpha)*m_current_value; return m_current_value; } //! \brief Return the current average value scalar_t current_value() { return m_current_value; } //! \brief Reset the average to 'value' void reset(scalar_t value) { m_current_value = value; } + //! \brief Set the parameter value + void set_alpha(scalar_t alpha) {m_alpha = alpha;} + + private: scalar_t m_alpha; scalar_t m_current_value; }; } // end namespace utils } // end namespace specmicp #endif // SPECMICP_UTILS_MOVINGAVERAGE_HPP