#pragma once #include #include #include namespace msfc { namespace filt { class GenericFilter { public: GenericFilter() = default; GenericFilter(size_t nData); GenericFilter(size_t nData, const std::vector& aCoeff, const std::vector& bCoeff); void setNData(size_t nData); void setCoeff(const std::vector& aCoeff, const std::vector& bCoeff); void getCoeff(std::vector& aCoeff, std::vector& bCoeff) const noexcept; size_t filterOrder() const noexcept { return m_order; } // bool stepFilter(const Eigen::VectorXd& data); bool stepFilter(double data); // Eigen::VectorXd results() const noexcept; double results() const noexcept; private: void normalize(); void shiftData(); protected: size_t m_nACoeffFilteredData; size_t m_nBCoeffFilteredData; std::vector m_aCoeff; std::vector m_bCoeff; std::vector m_filteredData; std::vector m_rawData; // Eigen::MatrixXd m_filteredData; // Eigen::MatrixXd m_rawData; }; } // namespace filt } // namespace msfc