// ----------------------------------------------------------------------------- // Moving Average Filter // Copyright (C) 2017-2018 by Xose PĂ©rez // ----------------------------------------------------------------------------- #if SENSOR_SUPPORT #pragma once #include #include "BaseFilter.h" class MovingAverageFilter : public BaseFilter { public: void add(double value) { _sum = _sum + value - _data[_pointer]; _data[_pointer] = value; _pointer = (_pointer + 1) % _size; } unsigned char count() { return _pointer; } void reset() {} double result() { return _sum; } void resize(unsigned char size) { if (_size == size) return; _size = size; if (_data) delete _data; _data = new double[_size]; for (unsigned char i=0; i<_size; i++) _data[i] = 0; _pointer = 0; _sum = 0; } protected: unsigned char _pointer = 0; double _sum = 0; double * _data = NULL; }; #endif // SENSOR_SUPPORT