00001 #ifndef INDII_ML_FILTER_RAUCHTUNGSTRIEBELSMOOTHERMODEL_HPP 00002 #define INDII_ML_FILTER_RAUCHTUNGSTRIEBELSMOOTHERMODEL_HPP 00003 00004 #include "KalmanFilterModel.hpp" 00005 00006 namespace indii { 00007 namespace ml { 00008 namespace filter { 00009 00010 /** 00011 * RauchTungStriebelSmoother 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 RauchTungStriebelSmootherModel : virtual public KalmanFilterModel<T> { 00023 public: 00024 /** 00025 * Destructor. 00026 */ 00027 virtual ~RauchTungStriebelSmootherModel() = 0; 00028 00029 /** 00030 * Perform smoothing update. 00031 * 00032 * @param p_xtnp1_ytT \f$P\big(\mathbf{x}(t_{n+1})\, | 00033 * \,\mathbf{y}(t_1),\ldots,\mathbf{y}(t_T)\big)\f$; 00034 * @param p_xtnp1_ytn \f$P\big(\mathbf{x}(t_{n+1})\, | 00035 * \,\mathbf{y}(t_1),\ldots,\mathbf{y}(t_n)\big)\f$ 00036 * @param p_xtn_ytn \f$P\big(\mathbf{x}(t_n)\, | 00037 * \,\mathbf{y}(t_1),\ldots,\mathbf{y}(t_n)\big)\f$; @param delta 00038 * \f$t_{n+1} - t_n\f$; 00039 * 00040 * @return \f$P\big(\mathbf{x}(t_n)\, | 00041 * \,\mathbf{y}(t_1),\ldots,\mathbf{y}(t_T)\big)\f$ 00042 */ 00043 virtual indii::ml::aux::GaussianPdf p_xtn_ytT( 00044 const indii::ml::aux::GaussianPdf& p_xtnp1_ytT, 00045 const indii::ml::aux::GaussianPdf& p_xtnp1_ytn, 00046 const indii::ml::aux::GaussianPdf& p_xtn_ytn, 00047 const T delta) = 0; 00048 00049 }; 00050 00051 } 00052 } 00053 } 00054 00055 template <class T> 00056 indii::ml::filter::RauchTungStriebelSmootherModel<T>::~RauchTungStriebelSmootherModel() { 00057 // 00058 } 00059 00060 #endif
1.5.3