diff --git a/include/BaseFilter.h b/include/BaseFilter.h index fae084e..c45176b 100644 --- a/include/BaseFilter.h +++ b/include/BaseFilter.h @@ -57,7 +57,7 @@ public: void resetFilter() noexcept { derived().resetFilter(); }; /*!< \brief Return the filter type */ - FilterType type() const noexcept { return (m_center == 0 ? FilterType::Forward : FilterType::Centered); } + FilterType type() const noexcept { return (m_center == 0 ? FilterType::Backward : FilterType::Centered); } /*! \brief Get digital filter coefficients. * * It will automatically resize the given vectors. @@ -110,7 +110,7 @@ private: * \param bCoeff Numerator coefficients of the filter in decreasing order. * \param center */ - BaseFilter(const vectX_t& aCoeff, const vectX_t& bCoeff, FilterType type = FilterType::Forward); + BaseFilter(const vectX_t& aCoeff, const vectX_t& bCoeff, FilterType type = FilterType::Backward); /*! \brief Default destructor. */ virtual ~BaseFilter() = default; diff --git a/include/BaseFilter.tpp b/include/BaseFilter.tpp index 5872077..fd8ceb3 100644 --- a/include/BaseFilter.tpp +++ b/include/BaseFilter.tpp @@ -35,7 +35,7 @@ template void BaseFilter::setType(FilterType type) { Expects(type == FilterType::Centered ? m_bCoeff.size() > 2 && m_bCoeff.size() % 2 == 1 : true); - m_center = (type == FilterType::Forward ? 0 : (m_bCoeff.size() - 1) / 2); + m_center = (type == FilterType::Backward ? 0 : (m_bCoeff.size() - 1) / 2); } template @@ -44,7 +44,7 @@ void BaseFilter::setCoeffs(T2&& aCoeff, T2&& bCoeff) { static_assert(std::is_convertible_v>, "The coefficients types should be convertible to vectX_t"); - Expects(checkCoeffs(aCoeff, bCoeff, (m_center == 0 ? FilterType::Forward : FilterType::Centered))); + Expects(checkCoeffs(aCoeff, bCoeff, (m_center == 0 ? FilterType::Backward : FilterType::Centered))); m_aCoeff = aCoeff; m_bCoeff = bCoeff; normalizeCoeffs(); @@ -69,7 +69,7 @@ BaseFilter::BaseFilter(const vectX_t& aCoeff, const vectX_t& b , m_rawData(bCoeff.size()) { Expects(checkCoeffs(aCoeff, bCoeff, type)); - m_center = (type == FilterType::Forward ? 0 : (bCoeff.size() - 1) / 2); + m_center = (type == FilterType::Backward ? 0 : (bCoeff.size() - 1) / 2); normalizeCoeffs(); resetFilter(); m_isInitialized = true; diff --git a/include/GenericFilter.h b/include/GenericFilter.h index 8653d6e..20f3129 100644 --- a/include/GenericFilter.h +++ b/include/GenericFilter.h @@ -53,7 +53,7 @@ public: protected: GenericFilter() = default; - GenericFilter(const vectX_t& aCoeff, const vectX_t& bCoeff, FilterType type = FilterType::Forward) + GenericFilter(const vectX_t& aCoeff, const vectX_t& bCoeff, FilterType type = FilterType::Backward) : BaseFilter(aCoeff, bCoeff, type) {} }; @@ -80,7 +80,7 @@ public: protected: TVGenericFilter() = default; - TVGenericFilter(int order, const vectX_t& aCoeff, const vectX_t& bCoeff, FilterType type = FilterType::Forward) + TVGenericFilter(int order, const vectX_t& aCoeff, const vectX_t& bCoeff, FilterType type = FilterType::Backward) : BaseFilter(aCoeff, bCoeff, type) , m_order(order) { diff --git a/include/differentiators.h b/include/differentiators.h index 0b5544e..6c75501 100644 --- a/include/differentiators.h +++ b/include/differentiators.h @@ -72,7 +72,7 @@ template vectN_t GetSLNLCoeffs() { return vectN_t{ T(-2 template vectN_t GetSLNLCoeffs() { return vectN_t{ T(-86), T(142), T(193), T(126), T(0), T(-126), T(-193), T(-142), T(86) } / T(1188); } template vectN_t GetSLNLCoeffs() { return vectN_t{ T(-300), T(294), T(532), T(503), T(296), T(0), T(-296), T(-503), T(-532), T(-294), T(300) } / T(5148); } -// Forward Noise-Robust differentiators; http://www.holoborodko.com/pavel/wp-content/uploads/OneSidedNoiseRobustDifferentiators.pdf +// Backward Noise-Robust differentiators; http://www.holoborodko.com/pavel/wp-content/uploads/OneSidedNoiseRobustDifferentiators.pdf template vectN_t GetFNRCoeffs() { @@ -95,7 +95,7 @@ template vectN_t GetFNRCoeffs() { return vectN_t{ T(1), template vectN_t GetFNRCoeffs() { return vectN_t{ T(1), T(7), T(20), T(28), T(14), T(-14), T(-28), T(-20), T(-7), T(-1) } / T(256); } template vectN_t GetFNRCoeffs() { return vectN_t{ T(1), T(8), T(27), T(48), T(42), T(0), T(-42), T(-48), T(-27), T(-8), T(-1) } / T(512); } -// Forward Hybrid Noise-Robust differentiators; http://www.holoborodko.com/pavel/wp-content/uploads/OneSidedNoiseRobustDifferentiators.pdf +// Backward Hybrid Noise-Robust differentiators; http://www.holoborodko.com/pavel/wp-content/uploads/OneSidedNoiseRobustDifferentiators.pdf template vectN_t GetFHNRCoeffs(); template vectN_t GetFHNRCoeffs() { return vectN_t{ T(2), T(-1), T(-2), T(1) } / T(2); } template vectN_t GetFHNRCoeffs() { return vectN_t{ T(7), T(1), T(-10), T(-1), T(3) } / T(10); } @@ -114,9 +114,9 @@ template typename Foo> vectN_t vectN_t GetFNRISDCoeffs() { return GetForwardISDCoeffs(); } -// Forward Hybrid Noise-Robust differentiators for irregular space data +// Backward Hybrid Noise-Robust differentiators for irregular space data template vectN_t GetFHNRISDCoeffs() { return GetForwardISDCoeffs(); } // Centered Noise-Robust differentiators (tangency at 2nd order): http://www.holoborodko.com/pavel/numerical-methods/numerical-derivative/smooth-low-noise-differentiators/ @@ -197,7 +197,7 @@ vectN_t GetSOCNRCoeffs() return v; } -// Second-Order Forward Noise-Robust differentiator: http://www.holoborodko.com/pavel/downloads/NoiseRobustSecondDerivative.pdf +// Second-Order Backward Noise-Robust differentiator: http://www.holoborodko.com/pavel/downloads/NoiseRobustSecondDerivative.pdf template vectN_t GetSOFNRCoeffs() { return GetSOCNRCoeffs(); } // Coefficients are the same. @@ -223,7 +223,7 @@ vectN_t GetSOCNRISDCoeffs() return v; } -// Second-Order Forward Noise-Robust Irregular Space Data differentiator: http://www.holoborodko.com/pavel/downloads/NoiseRobustSecondDerivative.pdf +// Second-Order Backward Noise-Robust Irregular Space Data differentiator: http://www.holoborodko.com/pavel/downloads/NoiseRobustSecondDerivative.pdf template vectN_t GetSOFNRISDCoeffs() { return GetSOCNRISDCoeffs(); } // Same coefficients @@ -279,10 +279,10 @@ public: } // namespace details -// Forward differentiators +// Backward differentiators template using ForwardNoiseRobustDiff = ForwardDifferentiator; template using ForwardHybridNoiseRobustDiff = ForwardDifferentiator; -// Time-Varying forward differentiators +// Time-Varying backward differentiators template using TVForwardNoiseRobustDiff = TVForwardDifferentiator; template using TVForwardHybridNoiseRobustDiff = TVForwardDifferentiator; @@ -297,14 +297,14 @@ template using TVCenteredNoiseRobust2Diff = TVCentralDiff template using TVCenteredNoiseRobust4Diff = TVCentralDifferentiator; -// Second-order forward differentiators +// Second-order backward differentiators template using ForwardSecondOrderDiff = ForwardDifferentiator; -// Second-order Time-Varying forward differentiators +// Second-order Time-Varying backward differentiators template using TVForwardSecondOrderDiff = TVForwardDifferentiator; // Second-order central differentiators template using CenteredSecondOrderDiff = CentralDifferentiator; -// Second-order Time-Varying forward differentiators +// Second-order Time-Varying backward differentiators template using TVCenteredSecondOrderDiff = TVCentralDifferentiator; diff --git a/include/typedefs.h b/include/typedefs.h index f85ac96..04d5ac7 100644 --- a/include/typedefs.h +++ b/include/typedefs.h @@ -44,7 +44,7 @@ template using vectXc_t = vectX_t>; /*!< Eigen complex column-vector */ enum class FilterType { - Forward, + Backward, Centered };