📄 infflt_8hpp-source.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Bayes++ Bayesian Filtering Classes: infFlt.hpp Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.2 --><div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Compound List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Compound Members</a> | <a class="qindex" href="globals.html">File Members</a></div><h1>infFlt.hpp</h1><a href="infFlt_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="preprocessor">#ifndef _BAYES_FILTER_INFORMATION</span>00002 <span class="preprocessor"></span><span class="preprocessor">#define _BAYES_FILTER_INFORMATION</span>00003 <span class="preprocessor"></span>00004 <span class="comment">/*</span>00005 <span class="comment"> * Bayes++ the Bayesian Filtering Library</span>00006 <span class="comment"> * Copyright (c) 2002 Michael Stevens</span>00007 <span class="comment"> * See accompanying Bayes++.htm for terms and conditions of use.</span>00008 <span class="comment"> *</span>00009 <span class="comment"> * $Header: /cvsroot/bayesclasses/Bayes++/BayesFilter/infFlt.hpp,v 1.9.2.1 2004/02/11 21:06:42 mistevens Exp $</span>00010 <span class="comment"> * $NoKeywords: $</span>00011 <span class="comment"> */</span>00012 00013 <span class="comment">/*</span>00014 <span class="comment"> * Information Filter Scheme.</span>00015 <span class="comment"> * A possibly non-linear Information filter</span>00016 <span class="comment"> *</span>00017 <span class="comment"> * References</span>00018 <span class="comment"> * [1] "Stochastic Models, Estimation, and Control} Peter S Maybeck, Academic Press, ISBN 0-12-480701-1</span>00019 <span class="comment"> * Section 5.7</span>00020 <span class="comment"> * [2] "Kalman Filtering, Theory and Practice", Mohinder S. Grewal, Angus P. Andrews ISBN 0-13-211335-X</span>00021 <span class="comment"> * To work with with Linear and Linrz models</span>00022 <span class="comment"> * a) a seperate state and information (via covariance) predict is used.</span>00023 <span class="comment"> * b) a EIF modified innovation update algorithm is used.</span>00024 <span class="comment"> *</span>00025 <span class="comment"> * Two alternative algorithms are used for predict functions:</span>00026 <span class="comment"> * For linrz models an extended predict form is used so information state 'y' is predicted via the</span>00027 <span class="comment"> * non-linear function. This requires that X, and Y are invertable so 'x' can be computed.</span>00028 <span class="comment"> * For linear invertable models predict can be done directly without computing x</span>00029 <span class="comment"> * Discontinous observe models require that predict is normailised with</span>00030 <span class="comment"> * respect to the observation.</span>00031 <span class="comment"> *</span>00032 <span class="comment"> * The filter is operated by performing a</span>00033 <span class="comment"> * predict, observe</span>00034 <span class="comment"> * cycle defined by the base class</span>00035 <span class="comment"> */</span>00036 <span class="preprocessor">#include "<a class="code" href="bayesFlt_8hpp.html">bayesFlt.hpp</a>"</span>00037 00038 <span class="comment">/* Filter namespace */</span>00039 <span class="keyword">namespace </span>Bayesian_filter00040 {00041 <a name="l00042"></a><a class="code" href="classBayesian__filter_1_1Information__scheme.html">00042</a> <span class="keyword">class </span><a class="code" href="classBayesian__filter_1_1Information__scheme.html">Information_scheme</a> : <span class="keyword">public</span> <a class="code" href="classBayesian__filter_1_1Extended__kalman__filter.html">Extended_kalman_filter</a>, <span class="keyword">virtual</span> <span class="keyword">public</span> <a class="code" href="classBayesian__filter_1_1Information__state__filter.html">Information_state_filter</a>00043 {00044 <span class="keyword">public</span>:00045 <a class="code" href="classBayesian__filter_1_1Information__scheme.html#a0">Information_scheme</a> (size_t x_size, size_t z_initialsize = 0);00046 <a class="code" href="classBayesian__filter_1_1Information__scheme.html">Information_scheme</a>& <a class="code" href="classBayesian__filter_1_1Information__scheme.html#a1">operator= </a>(<span class="keyword">const</span> <a class="code" href="classBayesian__filter_1_1Information__scheme.html">Information_scheme</a>&);00047 <span class="comment">// Optimise copy assignment to only copy filter state</span>00048 <a name="l00049"></a><a class="code" href="structBayesian__filter_1_1Information__scheme_1_1Linear__predict__byproducts.html">00049</a> <span class="keyword">struct </span><a class="code" href="structBayesian__filter_1_1Information__scheme_1_1Linear__predict__byproducts.html">Linear_predict_byproducts</a>00050 {00051 <a class="code" href="structBayesian__filter_1_1Information__scheme_1_1Linear__predict__byproducts.html#a0">Linear_predict_byproducts</a> (size_t x_size, size_t q_size);<a name="l00052"></a><a class="code" href="structBayesian__filter_1_1Information__scheme_1_1Linear__predict__byproducts.html#o0">00052</a> FM::SymMatrix <a class="code" href="structBayesian__filter_1_1Information__scheme_1_1Linear__predict__byproducts.html#o0">A</a>;<a name="l00053"></a><a class="code" href="structBayesian__filter_1_1Information__scheme_1_1Linear__predict__byproducts.html#o1">00053</a> FM::Matrix <a class="code" href="structBayesian__filter_1_1Information__scheme_1_1Linear__predict__byproducts.html#o1">tempG</a>;<a name="l00054"></a><a class="code" href="structBayesian__filter_1_1Information__scheme_1_1Linear__predict__byproducts.html#o2">00054</a> FM::SymMatrix <a class="code" href="structBayesian__filter_1_1Information__scheme_1_1Linear__predict__byproducts.html#o2">B</a>;<a name="l00055"></a><a class="code" href="structBayesian__filter_1_1Information__scheme_1_1Linear__predict__byproducts.html#o3">00055</a> FM::Vec <a class="code" href="structBayesian__filter_1_1Information__scheme_1_1Linear__predict__byproducts.html#o3">y</a>;00056 };00057 00058 00059 <span class="keywordtype">void</span> <a class="code" href="classBayesian__filter_1_1Information__scheme.html#a2">init</a> ();00060 <span class="keywordtype">void</span> <a class="code" href="classBayesian__filter_1_1Information__scheme.html#a3">update</a> ();00061 <span class="keywordtype">void</span> <a class="code" href="classBayesian__filter_1_1Information__scheme.html#a4">init_yY</a> ();00062 <span class="keywordtype">void</span> <a class="code" href="classBayesian__filter_1_1Information__scheme.html#a5">update_yY</a> ();00063 <span class="comment">// Covariance and information form state interface</span>00064 00065 <a class="code" href="classBayesian__filter_1_1Bayes__base.html#w0">Float</a> <a class="code" href="classBayesian__filter_1_1Information__scheme.html#a6">predict</a> (Linear_invertable_predict_model& f, Linear_predict_byproducts& b);00066 <span class="comment">// Linear Prediction in information form as in Ref[2]</span><a name="l00067"></a><a class="code" href="classBayesian__filter_1_1Information__scheme.html#a7">00067</a> <a class="code" href="classBayesian__filter_1_1Bayes__base.html#w0">Float</a> <a class="code" href="classBayesian__filter_1_1Information__scheme.html#a6">predict</a> (<a class="code" href="classBayesian__filter_1_1Linear__invertable__predict__model.html">Linear_invertable_predict_model</a>& f)00068 {00069 <a class="code" href="structBayesian__filter_1_1Information__scheme_1_1Linear__predict__byproducts.html">Linear_predict_byproducts</a> b(f.<a class="code" href="classBayesian__filter_1_1Linrz__predict__model.html#o0">Fx</a>.size1(),f.<a class="code" href="classBayesian__filter_1_1Addative__predict__model.html#o0">q</a>.size());00070 <span class="keywordflow">return</span> <a class="code" href="classBayesian__filter_1_1Information__scheme.html#a6">predict</a> (f, b); 00071 }00072 00073 <a class="code" href="classBayesian__filter_1_1Bayes__base.html#w0">Float</a> <a class="code" href="classBayesian__filter_1_1Information__scheme.html#a6">predict</a> (Linrz_predict_model& f);00074 <span class="comment">// Extended Prediction via state</span>00075 00076 <a class="code" href="classBayesian__filter_1_1Bayes__base.html#w0">Float</a> <a class="code" href="classBayesian__filter_1_1Information__scheme.html#a9">observe_innovation</a> (Linrz_uncorrelated_observe_model& h, <span class="keyword">const</span> FM::Vec& s);00077 <a class="code" href="classBayesian__filter_1_1Bayes__base.html#w0">Float</a> <a class="code" href="classBayesian__filter_1_1Information__scheme.html#a9">observe_innovation</a> (Linrz_correlated_observe_model& h, <span class="keyword">const</span> FM::Vec& s);00078 00079 <span class="keyword">protected</span>:<a name="l00080"></a><a class="code" href="classBayesian__filter_1_1Information__scheme.html#p0">00080</a> <span class="keywordtype">bool</span> <a class="code" href="classBayesian__filter_1_1Information__scheme.html#p0">update_required</a>; <span class="comment">// Postcondition of update is not met</span>00081 00082 <span class="keyword">protected</span>: <span class="comment">// Permenantly allocated temps</span><a name="l00083"></a><a class="code" href="classBayesian__filter_1_1Information__scheme.html#p1">00083</a> FM::RowMatrix <a class="code" href="classBayesian__filter_1_1Information__scheme.html#p1">tempX</a>;<a name="l00084"></a><a class="code" href="classBayesian__filter_1_1Information__scheme.html#p2">00084</a> FM::Vec <a class="code" href="classBayesian__filter_1_1Information__scheme.html#p2">i</a>;<a name="l00085"></a><a class="code" href="classBayesian__filter_1_1Information__scheme.html#p3">00085</a> FM::SymMatrix <a class="code" href="classBayesian__filter_1_1Information__scheme.html#p3">I</a>;00086 <span class="comment">// allow fast operation if z_size remains constant</span><a name="l00087"></a><a class="code" href="classBayesian__filter_1_1Information__scheme.html#p4">00087</a> FM::SymMatrix <a class="code" href="classBayesian__filter_1_1Information__scheme.html#p4">ZI</a>;<a name="l00088"></a><a class="code" href="classBayesian__filter_1_1Information__scheme.html#p5">00088</a> size_t <a class="code" href="classBayesian__filter_1_1Information__scheme.html#p5">last_z_size</a>;00089 <span class="keywordtype">void</span> <a class="code" href="classBayesian__filter_1_1Information__scheme.html#b0">observe_size</a> (size_t z_size);00090 };00091 00092 00093 }<span class="comment">//namespace</span>00094 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Feb 16 11:20:39 2004 for Bayes++ Bayesian Filtering Classes by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.2 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -