pf
pf::kalman< dimstate, dimobs, diminput > Class Template Reference

A class template for Kalman filtering. More...

#include <cf_filters.h>

Private Types

using ssv = Eigen::Matrix< double, dimstate, 1 >
 
using osv = Eigen::Matrix< double, dimobs, 1 >
 
using isv = Eigen::Matrix< double, diminput, 1 >
 
using ssMat = Eigen::Matrix< double, dimstate, dimstate >
 
using osMat = Eigen::Matrix< double, dimobs, dimobs >
 
using siMat = Eigen::Matrix< double, dimstate, diminput >
 
using osMat = Eigen::Matrix< double, dimobs, dimstate >
 
using ioMat = Eigen::Matrix< double, dimobs, diminput >
 

Private Member Functions

 kalman (const ssv &initStateMean, const Mat &initStateVar) double getLogCondLike() const
 Non-default constructor. More...
 
ssv getFiltMean () const
 Get the current filter mean. More...
 
Mat getFiltVar () const
 Get the current filter variance-covariance matrix. More...
 
void update (const osv &yt, const ssMat &stateTrans, const ssMat &cholStateVar, const siMat &stateInptAffector, const isv &inputData, const osMat &obsMat, const ioMat &obsInptAffector, const osMat &cholObsVar)
 Perform a Kalman filter predict-and-update. More...
 
void updatePrior (const ssMat &stateTransMat, const ssMat &cholStateVar, const siMat &stateInptAffector, const isv &inputData)
 Predicts the next state. More...
 
void updatePosterior (const osv &yt, const osMat &obsMat, const oiMat &obsInptAffector, const isv &inputData, const osMat &cholObsVar)
 Turns prediction into new filtering distribution. More...
 

Private Attributes

ssv m_predMean
 predictive state mean
 
ssv m_filtMean
 filter mean
 
ssMat m_predVar
 predictive var matrix
 
ssMat m_filtVar
 filter var matrix
 
double m_lastLogCondLike
 latest log conditional likelihood
 
bool m_fresh
 has data been observed?
 

Detailed Description

template<size_t dimstate, size_t dimobs, size_t diminput>
class pf::kalman< dimstate, dimobs, diminput >

A class template for Kalman filtering.

Author
taylor

Member Typedef Documentation

template<size_t dimstate, size_t dimobs, size_t diminput>
using pf::kalman< dimstate, dimobs, diminput >::ioMat = Eigen::Matrix<double,dimobs,diminput>
private

"input dim by observation dimension matrix"

template<size_t dimstate, size_t dimobs, size_t diminput>
using pf::kalman< dimstate, dimobs, diminput >::isv = Eigen::Matrix<double,diminput,1>
private

"input size vector" type alias for linear algebra stuff

template<size_t dimstate, size_t dimobs, size_t diminput>
using pf::kalman< dimstate, dimobs, diminput >::osMat = Eigen::Matrix<double,dimobs,dimobs>
private

"observation size matrix" type alias for linear algebra stuff

template<size_t dimstate, size_t dimobs, size_t diminput>
using pf::kalman< dimstate, dimobs, diminput >::osMat = Eigen::Matrix<double,dimobs,dimstate>
private

"observation dim by state dimension matrix"

template<size_t dimstate, size_t dimobs, size_t diminput>
using pf::kalman< dimstate, dimobs, diminput >::osv = Eigen::Matrix<double,dimobs,1>
private

"observation size vector" type alias for linear algebra stuff

template<size_t dimstate, size_t dimobs, size_t diminput>
using pf::kalman< dimstate, dimobs, diminput >::siMat = Eigen::Matrix<double,dimstate,diminput>
private

"state dim by input dimension matrix"

template<size_t dimstate, size_t dimobs, size_t diminput>
using pf::kalman< dimstate, dimobs, diminput >::ssMat = Eigen::Matrix<double,dimstate,dimstate>
private

"state size matrix" type alias for linear algebra stuff

template<size_t dimstate, size_t dimobs, size_t diminput>
using pf::kalman< dimstate, dimobs, diminput >::ssv = Eigen::Matrix<double,dimstate,1>
private

"state size vector" type alias for linear algebra stuff

Constructor & Destructor Documentation

template<size_t dimstate, size_t dimobs, size_t diminput>
pf::kalman< dimstate, dimobs, diminput >::kalman ( const ssv initStateMean,
const Mat &  initStateVar 
) const
private

Non-default constructor.

returns the log of the latest conditional likelihood.

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

Member Function Documentation

template<size_t dimstate, size_t dimobs, size_t diminput>
auto pf::kalman< dimstate, dimobs, diminput >::getFiltMean ( ) const
private

Get the current filter mean.

Returns
E[x_t | y_{1:t}]
template<size_t dimstate, size_t dimobs, size_t diminput>
auto pf::kalman< dimstate, dimobs, diminput >::getFiltVar ( ) const
private

Get the current filter variance-covariance matrix.

Returns
V[x_t | y_{1:t}]
template<size_t dimstate, size_t dimobs, size_t diminput>
void pf::kalman< dimstate, dimobs, diminput >::update ( const osv yt,
const ssMat stateTrans,
const ssMat cholStateVar,
const siMat stateInptAffector,
const isv inputData,
const osMat obsMat,
const ioMat obsInptAffector,
const osMat cholObsVar 
)
private

Perform a Kalman filter predict-and-update.

Parameters
ytthe new data point.
stateTransthe transition matrix of the state
cholStateVarthe Cholesky Decomposition of the state noise covariance matrix.
stateInptAffectorthe matrix affecting how input data affects state transition.
inputDataexogenous input data
obsMatthe observation/emission matrix of the observation's conditional (on the state) distn.
obsInptAffectorthe matrix affecting how input data affects the observational distribution.
cholObsVarthe Cholesky Decomposition of the observatio noise covariance matrix.
template<size_t dimstate, size_t dimobs, size_t diminput>
void pf::kalman< dimstate, dimobs, diminput >::updatePosterior ( const osv yt,
const osMat obsMat,
const oiMat &  obsInptAffector,
const isv inputData,
const osMat cholObsVar 
)
private

Turns prediction into new filtering distribution.

Parameters
yt
obsMat
obsInptAffector
inputData
cholObsVar
template<size_t dimstate, size_t dimobs, size_t diminput>
void pf::kalman< dimstate, dimobs, diminput >::updatePrior ( const ssMat stateTransMat,
const ssMat cholStateVar,
const siMat stateInptAffector,
const isv inputData 
)
private

Predicts the next state.

Todo:
handle diagonal variance matrices, and ensure symmetricness in other ways
Parameters
stateTransMat
cholStateVar
stateInptAffector
inputData

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