⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bayesflt_8hpp-source.html

📁 Bayes滤波器算法C++类说明文档,源码见Bayes滤波器算法
💻 HTML
📖 第 1 页 / 共 5 页
字号:
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&amp; <a class="code" href="classBayesian__filter_1_1Functional__predict__model.html#a0">fx</a>(<span class="keyword">const</span> FM::Vec&amp; 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&amp; <a class="code" href="classBayesian__filter_1_1Functional__predict__model.html#a1">operator()</a>(<span class="keyword">const</span> FM::Vec&amp; 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&amp; <a class="code" href="classBayesian__filter_1_1Addative__predict__model.html#a1">f</a>(<span class="keyword">const</span> FM::Vec&amp; 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&amp; <a class="code" href="classBayesian__filter_1_1Linear__predict__model.html#a1">f</a>(<span class="keyword">const</span> FM::Vec&amp; 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&amp; <a class="code" href="classBayesian__filter_1_1Observe__function.html#a0">h</a>(<span class="keyword">const</span> FM::Vec&amp; 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&amp; 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 + -