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 */
33namespace Bayesian_filter
34{
35
37{
38public:
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{
76public:
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
Definition bayesFlt.hpp:607
void init_yY()
Definition infRtFlt.cpp:54
void update_yY()
Definition infRtFlt.cpp:113
void update()
Definition infRtFlt.cpp:94
FM::Vec r
Definition infRtFlt.hpp:39
static void inverse_Fx(FM::DenseColMatrix &invFx, const FM::Matrix &Fx)
Definition infRtFlt.cpp:129
FM::UTriMatrix R
Definition infRtFlt.hpp:40
Float predict(Linrz_predict_model &f, const FM::ColMatrix &invFx, bool linear_r)
Definition infRtFlt.cpp:152
Float predict(Linear_invertible_predict_model &f)
Definition infRtFlt.hpp:54
Float observe_innovation(Linrz_uncorrelated_observe_model &h, const FM::Vec &s)
Definition infRtFlt.cpp:275
void init()
Definition infRtFlt.cpp:36
struct Bayesian_filter::Linear_invertible_predict_model::inverse_model inv
Definition bayesFlt.hpp:194
Definition bayesFlt.hpp:183
FMMatrix< detail::BaseColMatrix > ColMatrix
Definition uBLASmatrix.hpp:326
FMVec< detail::BaseVector > Vec
Definition uBLASmatrix.hpp:323
FMMatrix< detail::BaseUpperTriMatrix > UTriMatrix
Definition uBLASmatrix.hpp:328
RowMatrix Matrix
Definition uBLASmatrix.hpp:325
FMMatrix< detail::BaseDenseColMatrix > DenseColMatrix
Definition uBLASmatrix.hpp:336
double Float
Definition matSupSub.hpp:55
Definition bayesException.hpp:21