18 template<
typename float_t,
size_t dimobs,
size_t dimstate>
23 using float_type = float_t;
26 using osv = Eigen::Matrix<float_t,dimobs,1>;
29 using ssv = Eigen::Matrix<float_t,dimstate,1>;
32 using Mat = Eigen::Matrix<float_t,Eigen::Dynamic,Eigen::Dynamic>;
35 using func = std::function<const Mat(const ssv&)>;
38 using funcs = std::vector<func>;
41 static constexpr
unsigned int dim_obs = dimobs;
44 static constexpr
unsigned int dim_state = dimstate;
50 virtual void filter(
const osv &data,
const funcs& fs = funcs() ) = 0;
70 template<
typename float_t,
size_t dim_s_state,
size_t dim_ns_state,
size_t dimobs>
75 using osv = Eigen::Matrix<float_t,dimobs,1>;
78 using sssv = Eigen::Matrix<float_t,dim_s_state,1>;
81 using nsssv = Eigen::Matrix<float_t,dim_ns_state,1>;
84 using Mat = Eigen::Matrix<float_t,Eigen::Dynamic,Eigen::Dynamic>;
87 using func = std::function<const Mat(const nsssv&, const sssv&)>;
90 using funcs = std::vector<func>;
93 static constexpr
unsigned int dim_sampled_state = dim_s_state;
96 static constexpr
unsigned int dim_not_sampled_state = dim_ns_state;
99 static constexpr
unsigned int dim_obs = dimobs;
105 virtual void filter(
const osv &data,
const funcs& fs = funcs() ) = 0;
116 template<
size_t dimx,
size_t dimy,
typename float_t>
121 using ssv = Eigen::Matrix<float_t, dimx, 1>;
124 using osv = Eigen::Matrix<float_t, dimy, 1>;
127 using aPair = std::pair<std::vector<ssv>, std::vector<osv> >;
133 aPair sim_forward(
unsigned int T);
139 virtual ssv muSamp() = 0;
146 virtual ssv fSamp (
const ssv &xtm1) = 0;
153 virtual osv gSamp (
const ssv &xt) = 0;
157 template<
size_t dimx,
size_t dimy,
typename float_t>
164 xs.push_back(this->muSamp());
165 ys.push_back(this->gSamp(xs[0]));
168 for(
size_t i = 1; i < T; ++i) {
170 auto xt = this->fSamp(xs[i-1]);
172 ys.push_back(this->gSamp(xt));
175 return aPair(xs, ys);
aPair sim_forward(unsigned int T)
simulates forward through time
Definition: pf_base.h:158
Definition: pf_base.h:117
virtual void filter(const osv &data, const funcs &fs=funcs())=0
the filtering function that must be defined
virtual float_t getLogCondLike() const =0
the getter method that must be defined (for conditional log-likelihood)