A class template for Kalman filtering.
More...
#include <cf_filters.h>
|
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 > |
|
|
| 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...
|
|
template<size_t dimstate, size_t dimobs, size_t diminput>
class pf::kalman< dimstate, dimobs, diminput >
A class template for Kalman filtering.
- Author
- taylor
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
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)
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
-
yt | the new data point. |
stateTrans | the transition matrix of the state |
cholStateVar | the Cholesky Decomposition of the state noise covariance matrix. |
stateInptAffector | the matrix affecting how input data affects state transition. |
inputData | exogenous input data |
obsMat | the observation/emission matrix of the observation's conditional (on the state) distn. |
obsInptAffector | the matrix affecting how input data affects the observational distribution. |
cholObsVar | the 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: