Bayes++ Bayesian Filtering Classes  Release 2014.5 - Copyright (c) 2003,2004,2005,2006,2011,2012,2014 Michael Stevens
infRtFlt.hpp
Go to the documentation of this file.
1 #ifndef _BAYES_FILTER_INFORMATION_ROOT
2 #define _BAYES_FILTER_INFORMATION_ROOT
3 
4 /*
5  * Bayes++ the Bayesian Filtering Library
6  * Copyright (c) 2002 Michael Stevens
7  * See accompanying Bayes++.htm for terms and conditions of use.
8  *
9  * $Id$
10  */
11 
12 /*
13  * Information Root Filter Scheme.
14  * A extended 'Square-root' Information filter as an Abstract class
15  *
16  * Algorithm: Square-root information propagation using QR factorisation
17  * Ref: P. Dyer and S. McReynolds, "Extension of Square-Root Filtering to Include Process Noise",
18  * [1] Journal of Optimization Theory and Applications, Vol.3 No.6 1969
19  * Filter maintains r,R where
20  * inv(R)*inv(R)' = X
21  * r = R*x
22  * R is upper triangular but not strictly a Cholesky factor as diagonal may be negative
23  * Observe algorithm has been extended to include linearised models
24  * Discontinuous observe models require that state is normalised with respect to the observation.
25  *
26  * The filter is operated by performing a
27  * predict, observe
28  * cycle defined by the base class
29  */
30 #include "bayesFlt.hpp"
31 
32 /* Filter namespace */
33 namespace Bayesian_filter
34 {
35 
37 {
38 public:
39  FM::Vec r; // Information Root state
40  FM::UTriMatrix R; // Information Root
41 
42  Information_root_scheme (std::size_t x_size, std::size_t z_initialsize = 0);
43 
44  void init ();
45  void update ();
46  // Covariance form state interface
47 
48  Float predict (Linrz_predict_model& f, const FM::ColMatrix& invFx, bool linear_r);
49  /* Generalised form, using precomputed inverse of f.Fx */
51  /* Use linrz form for r, computes inverse model using inverse_Fx */
53  /* Use linear form for r, computes inverse model using inverse_Fx */
55  /* Use linear form for r, and use inv.Fx from invertible model */
56  {
57  return predict(f, f.inv.Fx, true);
58  }
59 
62  // Extended_kalman_filter observe
63 
64  static void inverse_Fx (FM::DenseColMatrix& invFx, const FM::Matrix& Fx);
65  /* Numerical Inversion of Fx using LU factorisation */
66 };
67 
68 
69 /*
70  * Information Root Filter Scheme with exposed information state
71  * Augments Information_root_filter with y,Y in the interface
72  */
73 
75 {
76 public:
77  Information_root_info_scheme (std::size_t x_size, std::size_t z_initialsize = 0);
78 
79  void init_yY ();
80  void update_yY ();
81  // Information form state interface
82 };
83 
84 
85 }//namespace
86 #endif
static void inverse_Fx(FM::DenseColMatrix &invFx, const FM::Matrix &Fx)
Definition: infRtFlt.cpp:129
FM::UTriMatrix R
Definition: infRtFlt.hpp:40
Float observe_innovation(Linrz_uncorrelated_observe_model &h, const FM::Vec &s)
Definition: infRtFlt.cpp:275
FM::Vec r
Definition: infRtFlt.hpp:39
void update()
Definition: infRtFlt.cpp:94
FMMatrix< detail::BaseUpperTriMatrix > UTriMatrix
Definition: uBLASmatrix.hpp:328
Float predict(Linear_invertable_predict_model &f)
Definition: infRtFlt.hpp:54
Definition: bayesException.hpp:20
void init()
Definition: infRtFlt.cpp:36
Information_root_scheme(std::size_t x_size, std::size_t z_initialsize=0)
Definition: infRtFlt.cpp:23
Definition: bayesFlt.hpp:606
FMVec< detail::BaseVector > Vec
Definition: uBLASmatrix.hpp:323
RowMatrix Matrix
Definition: uBLASmatrix.hpp:325
Bayesian_filter_matrix::Float Float
Definition: bayesFlt.hpp:39
FMMatrix< detail::BaseDenseColMatrix > DenseColMatrix
Definition: uBLASmatrix.hpp:336
Float predict(Linrz_predict_model &f, const FM::ColMatrix &invFx, bool linear_r)
Definition: infRtFlt.cpp:152
Definition: bayesFlt.hpp:524
Definition: bayesFlt.hpp:177
FMMatrix< detail::BaseColMatrix > ColMatrix
Definition: uBLASmatrix.hpp:326
struct Bayesian_filter::Linear_invertable_predict_model::inverse_model inv
Definition: bayesFlt.hpp:189
Definition: infRtFlt.hpp:36