27 template <
class T,
int WINDOW_LENGTH>
42 _mean = rollingMean.next(x);
43 _variance = (((
long)x - _previous_mean)*((
long)x - _mean))>>WINDOW_LENGTH_AS_RSHIFT;
44 _previous_mean = _mean;
52 _mean = rollingMean.next(x);
53 _variance = (((
int)x - _previous_mean)*((
int)x - _mean))>>WINDOW_LENGTH_AS_RSHIFT;
54 _previous_mean = _mean;
79 return isqrt16(_variance);
85 T _previous_mean, _mean, _variance;
87 const uint8_t WINDOW_LENGTH_AS_RSHIFT;
94 template <
int WINDOW_LENGTH>
100 RollingStat() : _previous_mean(0), _mean(0), _variance(0), WINDOW_LENGTH_AS_RSHIFT(trailingZerosConst(WINDOW_LENGTH))
108 void update(
float x) {
109 _mean = rollingMean.next(x);
110 _variance = ((x - _previous_mean)*(x - _mean))/(WINDOW_LENGTH-1);
111 _previous_mean = _mean;
118 float getMean()
const {
126 float getVariance()
const {
134 float getStandardDeviation()
const {
135 return sqrt(_variance);
141 float _previous_mean, _mean, _variance;
143 const uint8_t WINDOW_LENGTH_AS_RSHIFT;
T getVariance() const
Return the approximate variance of the last WINDOW_LENGTH number of inputs.
void update(int8_t x)
Update the mean and variance given a new input value.
Calculates a running average over a specified number of the most recent readings. ...
T getMean() const
Return the mean of the last WINDOW_LENGTH number of inputs.
RollingStat()
Constructor.
void update(T x)
Update the mean and variance given a new input value.
WARNING: this class is work in progress, don't use it yet.
T getStandardDeviation() const
Return the approximate standard deviation of the last WINDOW_LENGTH number of inputs.