00001 #ifndef INDII_ML_FILTER_KALMANSMOOTHERMODEL_HPP 00002 #define INDII_ML_FILTER_KALMANSMOOTHERMODEL_HPP 00003 00004 #include "KalmanFilterModel.hpp" 00005 00006 namespace indii { 00007 namespace ml { 00008 namespace filter { 00009 00010 /** 00011 * KalmanSmoother compatible model. 00012 * 00013 * @author Lawrence Murray <lawrence@indii.org> 00014 * @version $Rev: 301 $ 00015 * @date $Date: 2007-09-10 23:56:50 +0100 (Mon, 10 Sep 2007) $ 00016 * 00017 * @param T The type of time. 00018 * 00019 * @see indii::ml::filter for general usage guidelines. 00020 */ 00021 template <class T = unsigned int> 00022 class KalmanSmootherModel : virtual public KalmanFilterModel<T> { 00023 public: 00024 /** 00025 * Destructor. 00026 */ 00027 virtual ~KalmanSmootherModel() = 0; 00028 00029 /** 00030 * Predict previous system state. 00031 * 00032 * @param p_xtn_ytn \f$P\big(\mathbf{x}(t_n)\, | 00033 * \,\mathbf{y}(t_n),\ldots,\mathbf{y}(t_T)\big)\f$; distribution 00034 * over states at the current time given present and future 00035 * measurements. 00036 * @param delta \f$\Delta t\f$; time step. 00037 * 00038 * @return \f$P\big(\mathbf{x}(t_n - \Delta t)\, | 00039 * \,\mathbf{y}(t_n),\ldots,\mathbf{y}(t_T)\big)\f$; predicted 00040 * distribution over states at time \f$t_n - \Delta t\f$ given 00041 * future measurements. 00042 */ 00043 virtual indii::ml::aux::GaussianPdf p_xtnm1_ytn( 00044 const indii::ml::aux::GaussianPdf& p_xtn_ytn, 00045 const T delta) = 0; 00046 00047 /** 00048 * Refine prediction of previous system state using previous 00049 * measurement. 00050 * 00051 * @param p_xtnm1_ytn \f$P\big(\mathbf{x}(t_n - \Delta 00052 * t)\,|\,\mathbf{y}(t_n),\ldots,\mathbf{y}(t_T)\big)\f$; predicted 00053 * distribution over states at time \f$t_n - \Delta t\f$ given the 00054 * history of measurements. Typically obtained from prior call to 00055 * #p_xtnm1_ytn. 00056 * @param ytnm1 \f$\mathbf{y}(t_n - \Delta t)\f$; the measurement at 00057 * time \f$t_n - \Delta t\f$. 00058 * @param delta \f$\Delta t\f$; time step. 00059 * 00060 * @return \f$P\big(\mathbf{x}(t_n - \Delta t)\, | \,\mathbf{y}(t_n 00061 * - \Delta),\ldots,\mathbf{y}(t_T)\big)\f$; distribution over 00062 * states at time \f$t_n - \Delta t\f$ given the present and future 00063 * measurements. 00064 */ 00065 virtual indii::ml::aux::GaussianPdf p_xtnm1_ytnm1( 00066 const indii::ml::aux::GaussianPdf& p_xtnm1_ytn, 00067 const indii::ml::aux::vector& ytnm1, const T delta) = 0; 00068 00069 }; 00070 00071 } 00072 } 00073 } 00074 00075 template <class T> 00076 indii::ml::filter::KalmanSmootherModel<T>::~KalmanSmootherModel() { 00077 // 00078 } 00079 00080 #endif
1.5.3