feat: rolling average

This commit is contained in:
CarlWachter
2024-07-15 18:21:14 +02:00
committed by dario
parent d5914f2d1c
commit 6d8869a409
2 changed files with 78 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
#include <sta/math/algorithms/rollingAverage.hpp>
namespace sta
{
namespace math
{
template <typename T>
RollingAverage<T>::RollingAverage(int size)
: size_(size), values_(nullptr), index_(0), sum_(0)
{
values_ = new Value[size];
for (int i = 0; i < size; i++)
{
values_[i] = 0;
}
}
template <typename T>
RollingAverage<T>::~RollingAverage()
{
delete values_;
}
template <typename T>
void RollingAverage<T>::add(Value value)
{
sum_ -= values_[index_];
values_[index_] = value;
sum_ += value;
index_ = (index_ + 1) % size_;
}
template <typename T>
typename RollingAverage<T>::Value RollingAverage<T>::get()
{
return sum_ / size_;
}
} // namespace math
} // namespace sta