pf
pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug > Class Template Referenceabstract

A base class for the Sequential Important Sampling with Resampling (SISR). Uses normal common random numbers. More...

#include <sisr_filter.h>

Inheritance diagram for pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >:
Collaboration diagram for pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >:

Public Member Functions

 SISRFilterCRN (const unsigned int &rs=1)
 The (one and only) constructor. More...
 
virtual ~SISRFilterCRN ()
 The (virtual) destructor.
 
float_t getLogCondLike () const
 Returns the most recent (log-) conditional likelihood. More...
 
std::vector< MatgetExpectations () const
 return all stored expectations (taken with respect to $p(x_t|y_{1:t})$ More...
 
void filter (const osv &data, const arrayUs &Uarr, const usvr &Uresamp, const std::vector< std::function< const Mat(const ssv &)> > &fs=std::vector< std::function< const Mat(const ssv &)> >())
 updates filtering distribution on a new datapoint. Optionally stores expectations of functionals. More...
 
virtual float_t logMuEv (const ssv &x1)=0
 Calculate muEv or logmuEv. More...
 
virtual ssv Xi1 (const usv &U, const osv &y1)=0
 "Samples" from time 1 proposal. Really, it maps the normal random vector into the sample. More...
 
virtual float_t logQ1Ev (const ssv &x1, const osv &y1)=0
 Calculate q1Ev or log q1Ev. More...
 
virtual float_t logGEv (const osv &yt, const ssv &xt)=0
 Calculate gEv or logGEv. More...
 
virtual float_t logFEv (const ssv &xt, const ssv &xtm1)=0
 Evaluates the state transition density. More...
 
virtual ssv Xit (const ssv &xtm1, const usv &U, const osv &yt)=0
 "Samples" from the proposal/instrumental/importance density at time t. Really, it maps the normal random vector into the sample. More...
 
virtual float_t logQEv (const ssv &xt, const ssv &xtm1, const osv &yt)=0
 Evaluates the proposal/instrumental/importance density/pmf. More...
 
- Public Member Functions inherited from pf::bases::pf_base_crn< float_t, dimy, dimx, dimu, dimur, nparts >
virtual void filter (const obs_sized_vec &data, const std::array< usv, numparts > &Us, const usvr &Uresamp, const func_vec &fs=func_vec())=0
 the filtering function that must be defined More...
 
virtual float_t getLogCondLike () const=0
 the getter method that must be defined (for conditional log-likelihood) More...
 
virtual ~pf_base_crn ()
 virtual destructor
 

Protected Attributes

arrayStates m_particles
 particle samples
 
arrayfloat_t m_logUnNormWeights
 particle weights
 
unsigned int m_now
 current time point
 
float_t m_logLastCondLike
 log p(y_t|y_{1:t-1}) or log p(y1)
 
resamp_t m_resampler
 resampling object
 
std::vector< Matm_expectations
 expectations E[h(x_t) | y_{1:t}] for user defined "h"s
 
unsigned int m_resampSched
 resampling schedule (e.g. resample every __ time points)
 

Private Types

using ssv = Eigen::Matrix< float_t, dimx, 1 >
 
using osv = Eigen::Matrix< float_t, dimy, 1 >
 
using usv = Eigen::Matrix< float_t, dimu, 1 >
 
using usvr = Eigen::Matrix< float_t, dimur, 1 >
 
using Mat = Eigen::Matrix< float_t, Eigen::Dynamic, Eigen::Dynamic >
 
using arrayStates = std::array< ssv, nparts >
 
using arrayUs = std::array< usv, nparts >
 
using arrayfloat_t = std::array< float_t, nparts >
 

Additional Inherited Members

- Public Types inherited from pf::bases::pf_base_crn< float_t, dimy, dimx, dimu, dimur, nparts >
using float_type = float_t
 
using obs_sized_vec = Eigen::Matrix< float_t, dimobs, 1 >
 
using state_sized_vec = Eigen::Matrix< float_t, dimstate, 1 >
 
using dynamic_matrix = Eigen::Matrix< float_t, Eigen::Dynamic, Eigen::Dynamic >
 
using func = std::function< const dynamic_matrix(const state_sized_vec &)>
 
using func_vec = std::vector< func >
 
using usv = Eigen::Matrix< float_t, dimu, 1 >
 
using usvr = Eigen::Matrix< float_t, dimur, 1 >
 
- Static Public Attributes inherited from pf::bases::pf_base_crn< float_t, dimy, dimx, dimu, dimur, nparts >
static constexpr unsigned int dim_obs
 
static constexpr unsigned int dim_state
 

Detailed Description

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t, typename float_t, bool debug = false>
class pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >

A base class for the Sequential Important Sampling with Resampling (SISR). Uses normal common random numbers.

Author
taylor

Member Typedef Documentation

◆ arrayfloat_t

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug = false>
using pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::arrayfloat_t = std::array<float_t, nparts>
private

type alias for array of float_ts

◆ arrayStates

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug = false>
using pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::arrayStates = std::array<ssv, nparts>
private

type alias for linear algebra stuff

◆ arrayUs

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug = false>
using pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::arrayUs = std::array<usv, nparts>
private

type alias for array of common random numbers

◆ Mat

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug = false>
using pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::Mat = Eigen::Matrix<float_t,Eigen::Dynamic,Eigen::Dynamic>
private

type alias for linear algebra stuff

◆ osv

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug = false>
using pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::osv = Eigen::Matrix<float_t, dimy, 1>
private

"obs size vector" type alias for linear algebra stuff

◆ ssv

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug = false>
using pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::ssv = Eigen::Matrix<float_t, dimx, 1>
private

"state size vector" type alias for linear algebra stuff

◆ usv

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug = false>
using pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::usv = Eigen::Matrix<float_t, dimu, 1>
private

"u sized vector" type alias for common random normal vector

◆ usvr

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug = false>
using pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::usvr = Eigen::Matrix<float_t, dimur, 1>
private

"u sized vector for resampling" type alias for common random normal vector that's used in systematic resampling

Constructor & Destructor Documentation

◆ SISRFilterCRN()

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug>
pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::SISRFilterCRN ( const unsigned int &  rs = 1)

The (one and only) constructor.

Parameters
rsthe resampling schedule (resample every rs time points).

Member Function Documentation

◆ filter()

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug>
void pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::filter ( const osv data,
const arrayUs Uarr,
const usvr Uresamp,
const std::vector< std::function< const Mat(const ssv &)> > &  fs = std::vector<std::function<const Mat(const ssv&)> >() 
)

updates filtering distribution on a new datapoint. Optionally stores expectations of functionals.

Parameters
datathe most recent data point
Uarrthe U samples that get used to sample from the state proposal
Uresampthe U sample that is used to resample
fsa vector of functions if you want to calculate expectations.

◆ getExpectations()

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug>
auto pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::getExpectations

return all stored expectations (taken with respect to $p(x_t|y_{1:t})$

Returns
return a std::vector<Mat> of expectations. How many depends on how many callbacks you gave to

◆ getLogCondLike()

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug>
float_t pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::getLogCondLike

Returns the most recent (log-) conditional likelihood.

Returns
log p(y_t | y_{1:t-1}) or log p(y_1)

◆ logFEv()

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug = false>
virtual float_t pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::logFEv ( const ssv xt,
const ssv xtm1 
)
pure virtual

Evaluates the state transition density.

Parameters
xtthe current state
xtm1the previous state
Returns
a float_t evaluaton of the log density/pmf

◆ logGEv()

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug = false>
virtual float_t pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::logGEv ( const osv yt,
const ssv xt 
)
pure virtual

Calculate gEv or logGEv.

Parameters
ytis a const Vec& describing the time t datum
xtis a const Vec& describing the time t state
Returns
the density or log-density evaluation as a float_t

◆ logMuEv()

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug = false>
virtual float_t pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::logMuEv ( const ssv x1)
pure virtual

Calculate muEv or logmuEv.

Parameters
x1is a const Vec& describing the state sample
Returns
the density or log-density evaluation as a float_t

◆ logQ1Ev()

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug = false>
virtual float_t pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::logQ1Ev ( const ssv x1,
const osv y1 
)
pure virtual

Calculate q1Ev or log q1Ev.

Parameters
x1is a const Vec& describing the time 1 state sample
y1is a const Vec& describing the time 1 datum
Returns
the density or log-density evaluation as a float_t

◆ logQEv()

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug = false>
virtual float_t pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::logQEv ( const ssv xt,
const ssv xtm1,
const osv yt 
)
pure virtual

Evaluates the proposal/instrumental/importance density/pmf.

Parameters
xtcurrent state
xtm1previous state
ytcurrent observation
Returns
a float_t evaluation of the log density/pmf

◆ Xi1()

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug = false>
virtual ssv pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::Xi1 ( const usv U,
const osv y1 
)
pure virtual

"Samples" from time 1 proposal. Really, it maps the normal random vector into the sample.

Parameters
Uthe normal random vector transformed into X1i
y1is a const Vec& representing the first observed datum
Returns
the sample as a Vec

◆ Xit()

template<size_t nparts, size_t dimx, size_t dimy, size_t dimu, size_t dimur, typename resamp_t , typename float_t , bool debug = false>
virtual ssv pf::filters::SISRFilterCRN< nparts, dimx, dimy, dimu, dimur, resamp_t, float_t, debug >::Xit ( const ssv xtm1,
const usv U,
const osv yt 
)
pure virtual

"Samples" from the proposal/instrumental/importance density at time t. Really, it maps the normal random vector into the sample.

Parameters
xtm1the previous state sample
Uthe normal random vector transformed
ytthe current observation
Returns
a state sample for the current time xt

The documentation for this class was generated from the following file: