📄 bayesflt_8hpp-source.html
字号:
00123 <span class="comment"> */</span>00124 {00125 <span class="keyword">public</span>:00126 <span class="keyword">virtual</span> <span class="keyword">const</span> FM::Vec& <a class="code" href="classBayesian__filter_1_1Functional__predict__model.html#a0">fx</a>(<span class="keyword">const</span> FM::Vec& x) <span class="keyword">const</span> = 0;00127 <span class="comment">// Functional model</span>00128 <span class="comment">// Note: Reference return value as a speed optimisation, MUST be copied by caller.</span>00129 <a name="l00130"></a><a class="code" href="classBayesian__filter_1_1Functional__predict__model.html#a1">00130</a> <span class="keyword">const</span> FM::Vec& <a class="code" href="classBayesian__filter_1_1Functional__predict__model.html#a1">operator()</a>(<span class="keyword">const</span> FM::Vec& x)<span class="keyword"> const</span>00131 <span class="keyword"> </span>{ <span class="comment">// Operator form of functional model</span>00132 <span class="keywordflow">return</span> <a class="code" href="classBayesian__filter_1_1Functional__predict__model.html#a0">fx</a>(x);00133 }00134 };00135 <a name="l00136"></a><a class="code" href="classBayesian__filter_1_1Gaussian__predict__model.html">00136</a> <span class="keyword">class </span><a class="code" href="classBayesian__filter_1_1Gaussian__predict__model.html">Gaussian_predict_model</a> : <span class="keyword">virtual</span> <span class="keyword">public</span> <a class="code" href="classBayesian__filter_1_1Predict__model__base.html">Predict_model_base</a>00137 <span class="comment">/* Gaussian noise predict model</span>00138 <span class="comment"> This fundamental noise model for linear/linearised filtering</span>00139 <span class="comment"> x(k|k-1) = x(k-1|k-1)) + G(k)w(k)</span>00140 <span class="comment"> G(k)w(k)</span>00141 <span class="comment"> q(k) = state noise covariance, q(k) is covariance of w(k)</span>00142 <span class="comment"> G(k) = state noise coupling</span>00143 <span class="comment">*/</span>00144 {00145 <span class="keyword">public</span>:00146 <a class="code" href="classBayesian__filter_1_1Gaussian__predict__model.html#a0">Gaussian_predict_model</a> (size_t x_size, size_t q_size);00147 <a name="l00148"></a><a class="code" href="classBayesian__filter_1_1Gaussian__predict__model.html#o0">00148</a> FM::Vec <a class="code" href="classBayesian__filter_1_1Gaussian__predict__model.html#o0">q</a>; <span class="comment">// Noise variance (always dense, use coupling to represent sparseness)</span><a name="l00149"></a><a class="code" href="classBayesian__filter_1_1Gaussian__predict__model.html#o1">00149</a> FM::Matrix <a class="code" href="classBayesian__filter_1_1Gaussian__predict__model.html#o1">G</a>; <span class="comment">// Noise Coupling</span>00150 <a name="l00151"></a><a class="code" href="classBayesian__filter_1_1Gaussian__predict__model.html#o2">00151</a> <a class="code" href="classBayesian__filter_1_1Numerical__rcond.html">Numerical_rcond</a> <a class="code" href="classBayesian__filter_1_1Gaussian__predict__model.html#o2">rclimit</a>;00152 <span class="comment">// Reciprocal condition number limit of linear components when factorised or inverted</span>00153 };00154 <a name="l00155"></a><a class="code" href="classBayesian__filter_1_1Addative__predict__model.html">00155</a> <span class="keyword">class </span><a class="code" href="classBayesian__filter_1_1Addative__predict__model.html">Addative_predict_model</a> : <span class="keyword">virtual</span> <span class="keyword">public</span> <a class="code" href="classBayesian__filter_1_1Predict__model__base.html">Predict_model_base</a>00156 <span class="comment">/* Addative Gaussian noise predict model</span>00157 <span class="comment"> This fundamental model for non-linear filtering with addative noise</span>00158 <span class="comment"> x(k|k-1) = f(x(k-1|k-1)) + G(k)w(k)</span>00159 <span class="comment"> q(k) = state noise covariance, q(k) is covariance of w(k)</span>00160 <span class="comment"> G(k) = state noise coupling</span>00161 <span class="comment"> ISSUE Should be privately derived from Gaussian_predict_model but access control in GCC is broken</span>00162 <span class="comment">*/</span>00163 {00164 <span class="keyword">public</span>:00165 <a class="code" href="classBayesian__filter_1_1Addative__predict__model.html#a0">Addative_predict_model</a> (size_t x_size, size_t q_size);00166 00167 <span class="keyword">virtual</span> <span class="keyword">const</span> FM::Vec& <a class="code" href="classBayesian__filter_1_1Addative__predict__model.html#a1">f</a>(<span class="keyword">const</span> FM::Vec& x) <span class="keyword">const</span> = 0;00168 <span class="comment">// Functional part of addative model</span>00169 <span class="comment">// Note: Reference return value as a speed optimisation, MUST be copied by caller.</span>00170 <a name="l00171"></a><a class="code" href="classBayesian__filter_1_1Addative__predict__model.html#o0">00171</a> FM::Vec <a class="code" href="classBayesian__filter_1_1Addative__predict__model.html#o0">q</a>; <span class="comment">// Noise variance (always dense, use coupling to represent sparseness)</span><a name="l00172"></a><a class="code" href="classBayesian__filter_1_1Addative__predict__model.html#o1">00172</a> FM::Matrix <a class="code" href="classBayesian__filter_1_1Addative__predict__model.html#o1">G</a>; <span class="comment">// Noise Coupling</span>00173 <a name="l00174"></a><a class="code" href="classBayesian__filter_1_1Addative__predict__model.html#o2">00174</a> <a class="code" href="classBayesian__filter_1_1Numerical__rcond.html">Numerical_rcond</a> <a class="code" href="classBayesian__filter_1_1Addative__predict__model.html#o2">rclimit</a>;00175 <span class="comment">// Reciprocal condition number limit of linear components when factorised or inverted</span>00176 };00177 <a name="l00178"></a><a class="code" href="classBayesian__filter_1_1Linrz__predict__model.html">00178</a> <span class="keyword">class </span><a class="code" href="classBayesian__filter_1_1Linrz__predict__model.html">Linrz_predict_model</a> : <span class="keyword">public</span> <a class="code" href="classBayesian__filter_1_1Addative__predict__model.html">Addative_predict_model</a>00179 <span class="comment">/* Linrz predict model</span>00180 <span class="comment"> This fundamental model for linear/linearised filtering</span>00181 <span class="comment"> x(k|k-1) = f(x(k-1|k-1)</span>00182 <span class="comment"> Fx(x(k-1|k-1) = Jacobian of of functional part fx with respect to state x</span>00183 <span class="comment"> */</span>00184 {00185 <span class="keyword">public</span>:00186 <a class="code" href="classBayesian__filter_1_1Linrz__predict__model.html#a0">Linrz_predict_model</a> (size_t x_size, size_t q_size);<a name="l00187"></a><a class="code" href="classBayesian__filter_1_1Linrz__predict__model.html#o0">00187</a> FM::Matrix <a class="code" href="classBayesian__filter_1_1Linrz__predict__model.html#o0">Fx</a>; <span class="comment">// Model</span>00188 };00189 <a name="l00190"></a><a class="code" href="classBayesian__filter_1_1Linear__predict__model.html">00190</a> <span class="keyword">class </span><a class="code" href="classBayesian__filter_1_1Linear__predict__model.html">Linear_predict_model</a> : <span class="keyword">public</span> <a class="code" href="classBayesian__filter_1_1Linrz__predict__model.html">Linrz_predict_model</a>00191 <span class="comment">/* Linear predict model</span>00192 <span class="comment"> Enforces linearity on f</span>00193 <span class="comment"> x(k|k-1) = Fx(k-1|k-1) * x(k-1|k-1)</span>00194 <span class="comment"> */</span>00195 {00196 <span class="keyword">public</span>:00197 <a class="code" href="classBayesian__filter_1_1Linear__predict__model.html#a0">Linear_predict_model</a> (size_t x_size, size_t q_size);<a name="l00198"></a><a class="code" href="classBayesian__filter_1_1Linear__predict__model.html#a1">00198</a> <span class="keyword">const</span> FM::Vec& <a class="code" href="classBayesian__filter_1_1Linear__predict__model.html#a1">f</a>(<span class="keyword">const</span> FM::Vec& x)<span class="keyword"> const</span>00199 <span class="keyword"> </span>{ <span class="comment">// Provide the linear implementation of functional f</span>00200 xp.assign (FM::prod(<a class="code" href="classBayesian__filter_1_1Linrz__predict__model.html#o0">Fx</a>,x));00201 <span class="keywordflow">return</span> xp;00202 }00203 <span class="keyword">private</span>:00204 <span class="keyword">mutable</span> FM::Vec xp;00205 };00206 <a name="l00207"></a><a class="code" href="classBayesian__filter_1_1Linear__invertable__predict__model.html">00207</a> <span class="keyword">class </span><a class="code" href="classBayesian__filter_1_1Linear__invertable__predict__model.html">Linear_invertable_predict_model</a> : <span class="keyword">public</span> <a class="code" href="classBayesian__filter_1_1Linear__predict__model.html">Linear_predict_model</a>00208 <span class="comment">/* Linear invertable predict model</span>00209 <span class="comment"> Fx has an inverse</span>00210 <span class="comment"> x(k-1|k-1) = inv.Fx(k-1|k-1) * x(k|k-1)</span>00211 <span class="comment"> */</span>00212 {00213 <span class="keyword">public</span>:00214 <a class="code" href="classBayesian__filter_1_1Linear__invertable__predict__model.html#a0">Linear_invertable_predict_model</a> (size_t x_size, size_t q_size);<a name="l00215"></a><a class="code" href="structBayesian__filter_1_1Linear__invertable__predict__model_1_1inverse__model.html">00215</a> <span class="keyword">struct </span><a class="code" href="structBayesian__filter_1_1Linear__invertable__predict__model_1_1inverse__model.html">inverse_model</a> {00216 <a class="code" href="structBayesian__filter_1_1Linear__invertable__predict__model_1_1inverse__model.html#a0">inverse_model</a> (size_t x_size);<a name="l00217"></a><a class="code" href="structBayesian__filter_1_1Linear__invertable__predict__model_1_1inverse__model.html#o0">00217</a> FM::ColMatrix <a class="code" href="structBayesian__filter_1_1Linear__invertable__predict__model_1_1inverse__model.html#o0">Fx</a>; <span class="comment">// Model inverse (ColMatrix as usually transposed)</span>00218 } <a class="code" href="classBayesian__filter_1_1Linear__invertable__predict__model.html#o0">inv</a>;00219 };00220 00221 00222 00223 <span class="comment">/*</span>00224 <span class="comment"> * Abstract Observation models</span>00225 <span class="comment"> * Observe models are used to parameterise the observe functions of filters</span>00226 <span class="comment"> */</span><a name="l00227"></a><a class="code" href="classBayesian__filter_1_1Observe__model__base.html">00227</a> <span class="keyword">class </span><a class="code" href="classBayesian__filter_1_1Observe__model__base.html">Observe_model_base</a> : <span class="keyword">public</span> <a class="code" href="classBayesian__filter_1_1Bayes__base.html">Bayes_base</a>00228 {00229 <span class="comment">// Empty</span>00230 };00231 <a name="l00232"></a><a class="code" href="classBayesian__filter_1_1Observe__function.html">00232</a> <span class="keyword">class </span><a class="code" href="classBayesian__filter_1_1Observe__function.html">Observe_function</a> : <span class="keyword">public</span> <a class="code" href="classBayesian__filter_1_1Bayes__base.html">Bayes_base</a>00233 <span class="comment">// Function object for predict of observations</span>00234 {00235 <span class="keyword">public</span>:00236 <span class="keyword">virtual</span> <span class="keyword">const</span> FM::Vec& <a class="code" href="classBayesian__filter_1_1Observe__function.html#a0">h</a>(<span class="keyword">const</span> FM::Vec& x) <span class="keyword">const</span> = 0;00237 <span class="comment">// Note: Reference return value as a speed optimisation, MUST be copied by caller.</span>00238 };00239 00240 <a name="l00241"></a><a class="code" href="classBayesian__filter_1_1Likelihood__observe__model.html">00241</a> <span class="keyword">class </span><a class="code" href="classBayesian__filter_1_1Likelihood__observe__model.html">Likelihood_observe_model</a> : <span class="keyword">virtual</span> <span class="keyword">public</span> <a class="code" href="classBayesian__filter_1_1Observe__model__base.html">Observe_model_base</a>00242 <span class="comment">/* Likelihood observe model L(z |x)</span>00243 <span class="comment"> * The most fundamental Bayesian definition of an observation</span>00244 <span class="comment"> * Defines an Interface without data members</span>00245 <span class="comment"> */</span>00246 {00247 <span class="keyword">public</span>:<a name="l00248"></a><a class="code" href="classBayesian__filter_1_1Likelihood__observe__model.html#a0">00248</a> <a class="code" href="classBayesian__filter_1_1Likelihood__observe__model.html#a0">Likelihood_observe_model</a>(size_t z_size) : <a class="code" href="classBayesian__filter_1_1Likelihood__observe__model.html#p0">z</a>(z_size)00249 {}00250 <span class="keyword">virtual</span> <a class="code" href="classBayesian__filter_1_1Bayes__base.html#w0">Float</a> <a class="code" href="classBayesian__filter_1_1Likelihood__observe__model.html#a1">L</a>(<span class="keyword">const</span> FM::Vec& x) <span class="keyword">const</span> = 0;00251 <span class="comment">// Likelihood L(z | x)</span>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -