indii/ml/filter/KalmanSmootherModel.hpp

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

Generated on Wed Dec 17 15:11:57 2008 for dysii Dynamical Systems Library by  doxygen 1.5.3