#pragma once #include "DigitalFilter.h" #include "typedefs.h" namespace fratio { template class MovingAverage : public DigitalFilter { public: MovingAverage() = default; MovingAverage(int windowSize) : DigitalFilter(Eigen::VectorX::Constant(1, T(1)), Eigen::VectorX::Constant(windowSize, T(1) / windowSize)) { } void setWindowSize(int windowSize) { if (windowSize <= 0) { m_status = FilterStatus::BAD_ORDER_SIZE; return; } setCoeffs(Eigen::VectorX::Constant(1, T(1)), Eigen::VectorX::Constant(windowSize, T(1) / windowSize)); } int windowSize() const noexcept { return bOrder(); } }; } // namespace fratio