// -*- c++ -*- #ifndef _LIB_KALMAN_EXP_HPP_ #define _LIB_KALMAN_EXP_HPP_ #include #include "filter_update.hpp" #include "volk_alloc.h" // see // [1] https://open.library.ubc.ca/collections/ubctheses/831/items/1.0096286 namespace gr { namespace digitalhf { class kalman_exp : public filter_update { public: virtual ~kalman_exp(); static sptr make(float r, float lambda); virtual void reset(); virtual gr_complex const* update(gr_complex const*, gr_complex const*); virtual void set_parameters(std::mapconst &); protected: void resize(size_t); private: kalman_exp(float r, float lambda); typedef volk::vector vec_type; float _lambda; float _r; vec_type _gain; vec_type _p; vec_type _temp; vec_type _t1; } ; } // namespace digitalhf } // namespace gr #endif // _LIB_KALMAN_EXP_HPP_