feat: rolling average

This commit is contained in:
CarlWachter
2024-07-15 18:21:14 +02:00
parent ca62dab64c
commit 8d06ba6f68
2 changed files with 78 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
#ifndef INC_ROLLING_AVG_HPP_
#define INC_ROLLING_AVG_HPP_
namespace sta
{
namespace math
{
/// Rolling average class, using a ring buffer
template <typename T> class RollingAverage
{
public:
using Value = T;
/// @brief Determines rolling average for a given size, discarding the oldest value
/// @param size Size of the rolling average
RollingAverage(int size);
~RollingAverage();
/// @brief Adds a value to the rolling average
/// @param value Value to add
void add(Value value);
/// @brief Returns the current rolling average
/// @return Current rolling average
Value get();
private:
Value *values_;
int size_;
int index_;
Value sum_;
};
} // namespace math
} // namespace sta
#endif /* INC_ROLLING_AVG_HPP_ */