142 | | <a name="l00209"></a><a class="code" href="classmpdf.html">00209</a> <span class="keyword">class </span><a class="code" href="classmpdf.html" title="Conditional probability density, e.g. modeling some dependencies.">mpdf</a> { |
143 | | <a name="l00210"></a>00210 <span class="keyword">protected</span>: |
144 | | <a name="l00212"></a><a class="code" href="classmpdf.html#f6687c07ff07d47812dd565368ca59eb">00212</a> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> <a class="code" href="classmpdf.html#f6687c07ff07d47812dd565368ca59eb" title="modeled random variable">rv</a>; |
145 | | <a name="l00214"></a><a class="code" href="classmpdf.html#acb7dda792b3cd5576f39fa3129abbab">00214</a> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> <a class="code" href="classmpdf.html#acb7dda792b3cd5576f39fa3129abbab" title="random variable in condition">rvc</a>; |
146 | | <a name="l00216"></a><a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c">00216</a> <a class="code" href="classepdf.html" title="Probability density function with numerical statistics, e.g. posterior density.">epdf</a>* <a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>; |
147 | | <a name="l00217"></a>00217 <span class="keyword">public</span>: |
148 | | <a name="l00218"></a>00218 |
149 | | <a name="l00220"></a>00220 <span class="comment">// virtual fnc moment ( const int order = 1 );</span> |
150 | | <a name="l00222"></a><a class="code" href="classmpdf.html#3f172b79ec4a5ebc87898a5381141f1b">00222</a> <span class="comment"></span> <span class="keyword">virtual</span> vec <a class="code" href="classmpdf.html#3f172b79ec4a5ebc87898a5381141f1b" title="Returns the required moment of the epdf.">samplecond</a> ( <span class="keyword">const</span> vec &cond, <span class="keywordtype">double</span> &ll ) { |
151 | | <a name="l00223"></a>00223 this-><a class="code" href="classmpdf.html#0f95a0cc6ab40611f46804682446ed83" title="Update ep so that it represents this mpdf conditioned on rvc = cond.">condition</a> ( cond ); |
152 | | <a name="l00224"></a>00224 vec temp= <a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>-><a class="code" href="classepdf.html#8019654e494bf5e458f6fb947e11b262" title="Returns a sample, from density .">sample</a>(); |
153 | | <a name="l00225"></a>00225 ll=<a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>-><a class="code" href="classepdf.html#e1996af1da1fa1214270066a96ca113e" title="Compute log-probability of argument val.">evallog</a> ( temp );<span class="keywordflow">return</span> temp; |
154 | | <a name="l00226"></a>00226 }; |
155 | | <a name="l00228"></a><a class="code" href="classmpdf.html#b1dae6171ee39a6a05976c7b1007a3c5">00228</a> <span class="keyword">virtual</span> mat <a class="code" href="classmpdf.html#b1dae6171ee39a6a05976c7b1007a3c5" title="Returns.">samplecond_m</a> ( <span class="keyword">const</span> vec &cond, vec &ll, <span class="keywordtype">int</span> N ) { |
156 | | <a name="l00229"></a>00229 this-><a class="code" href="classmpdf.html#0f95a0cc6ab40611f46804682446ed83" title="Update ep so that it represents this mpdf conditioned on rvc = cond.">condition</a> ( cond ); |
157 | | <a name="l00230"></a>00230 mat temp ( <a class="code" href="classmpdf.html#f6687c07ff07d47812dd565368ca59eb" title="modeled random variable">rv</a>.<a class="code" href="classRV.html#f5c7b8bd589eef09ccdf3329a0addea0" title="Return number of scalars in the RV.">count</a>(),N ); vec smp ( <a class="code" href="classmpdf.html#f6687c07ff07d47812dd565368ca59eb" title="modeled random variable">rv</a>.<a class="code" href="classRV.html#f5c7b8bd589eef09ccdf3329a0addea0" title="Return number of scalars in the RV.">count</a>() ); |
158 | | <a name="l00231"></a>00231 <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i=0;i<N;i++ ) {smp=<a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>-><a class="code" href="classepdf.html#8019654e494bf5e458f6fb947e11b262" title="Returns a sample, from density .">sample</a>() ;temp.set_col ( i, smp );ll ( i ) =<a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>-><a class="code" href="classepdf.html#e1996af1da1fa1214270066a96ca113e" title="Compute log-probability of argument val.">evallog</a> ( smp );} |
159 | | <a name="l00232"></a>00232 <span class="keywordflow">return</span> temp; |
160 | | <a name="l00233"></a>00233 }; |
161 | | <a name="l00235"></a><a class="code" href="classmpdf.html#0f95a0cc6ab40611f46804682446ed83">00235</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmpdf.html#0f95a0cc6ab40611f46804682446ed83" title="Update ep so that it represents this mpdf conditioned on rvc = cond.">condition</a> ( <span class="keyword">const</span> vec &cond ) {it_error ( <span class="stringliteral">"Not implemented"</span> );}; |
162 | | <a name="l00236"></a>00236 |
163 | | <a name="l00238"></a><a class="code" href="classmpdf.html#2ef8a6374029d990a678782f6decebbe">00238</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classmpdf.html#2ef8a6374029d990a678782f6decebbe" title="Shortcut for conditioning and evaluation of the internal epdf. In some cases, this...">evallogcond</a> ( <span class="keyword">const</span> vec &dt, <span class="keyword">const</span> vec &cond ) {<span class="keywordtype">double</span> tmp; this-><a class="code" href="classmpdf.html#0f95a0cc6ab40611f46804682446ed83" title="Update ep so that it represents this mpdf conditioned on rvc = cond.">condition</a> ( cond );tmp = <a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>-><a class="code" href="classepdf.html#e1996af1da1fa1214270066a96ca113e" title="Compute log-probability of argument val.">evallog</a> ( dt ); it_assert_debug(std::isfinite(tmp),<span class="stringliteral">"Infinite value"</span>); <span class="keywordflow">return</span> tmp; |
164 | | <a name="l00239"></a>00239 }; |
165 | | <a name="l00240"></a>00240 |
166 | | <a name="l00242"></a><a class="code" href="classmpdf.html#95fcff214848f66f1b489459370573fa">00242</a> <span class="keyword">virtual</span> vec <a class="code" href="classmpdf.html#95fcff214848f66f1b489459370573fa" title="Matrix version of evallogcond.">evallogcond_m</a> ( <span class="keyword">const</span> mat &Dt, <span class="keyword">const</span> vec &cond ) {this-><a class="code" href="classmpdf.html#0f95a0cc6ab40611f46804682446ed83" title="Update ep so that it represents this mpdf conditioned on rvc = cond.">condition</a> ( cond );<span class="keywordflow">return</span> <a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>-><a class="code" href="classepdf.html#2495a04bbacb9b55fe5a3a59b78affca" title="Compute log-probability of multiple values argument val.">evallog_m</a> ( Dt );}; |
| 142 | <a name="l00210"></a>00210 <span class="comment">//TODO Samplecond can be generalized</span> |
| 143 | <a name="l00211"></a>00211 |
| 144 | <a name="l00212"></a><a class="code" href="classmpdf.html">00212</a> <span class="keyword">class </span><a class="code" href="classmpdf.html" title="Conditional probability density, e.g. modeling some dependencies.">mpdf</a> { |
| 145 | <a name="l00213"></a>00213 <span class="keyword">protected</span>: |
| 146 | <a name="l00215"></a><a class="code" href="classmpdf.html#f6687c07ff07d47812dd565368ca59eb">00215</a> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> <a class="code" href="classmpdf.html#f6687c07ff07d47812dd565368ca59eb" title="modeled random variable">rv</a>; |
| 147 | <a name="l00217"></a><a class="code" href="classmpdf.html#acb7dda792b3cd5576f39fa3129abbab">00217</a> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> <a class="code" href="classmpdf.html#acb7dda792b3cd5576f39fa3129abbab" title="random variable in condition">rvc</a>; |
| 148 | <a name="l00219"></a><a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c">00219</a> <a class="code" href="classepdf.html" title="Probability density function with numerical statistics, e.g. posterior density.">epdf</a>* <a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>; |
| 149 | <a name="l00220"></a>00220 <span class="keyword">public</span>: |
| 150 | <a name="l00221"></a>00221 |
| 151 | <a name="l00223"></a>00223 <span class="comment">// virtual fnc moment ( const int order = 1 );</span> |
| 152 | <a name="l00225"></a><a class="code" href="classmpdf.html#3f172b79ec4a5ebc87898a5381141f1b">00225</a> <span class="comment"></span> <span class="keyword">virtual</span> vec <a class="code" href="classmpdf.html#3f172b79ec4a5ebc87898a5381141f1b" title="Returns the required moment of the epdf.">samplecond</a> ( <span class="keyword">const</span> vec &cond, <span class="keywordtype">double</span> &ll ) { |
| 153 | <a name="l00226"></a>00226 this-><a class="code" href="classmpdf.html#0f95a0cc6ab40611f46804682446ed83" title="Update ep so that it represents this mpdf conditioned on rvc = cond.">condition</a> ( cond ); |
| 154 | <a name="l00227"></a>00227 vec temp= <a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>-><a class="code" href="classepdf.html#8019654e494bf5e458f6fb947e11b262" title="Returns a sample, from density .">sample</a>(); |
| 155 | <a name="l00228"></a>00228 ll=<a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>-><a class="code" href="classepdf.html#e1996af1da1fa1214270066a96ca113e" title="Compute log-probability of argument val.">evallog</a> ( temp );<span class="keywordflow">return</span> temp; |
| 156 | <a name="l00229"></a>00229 }; |
| 157 | <a name="l00231"></a><a class="code" href="classmpdf.html#b1dae6171ee39a6a05976c7b1007a3c5">00231</a> <span class="keyword">virtual</span> mat <a class="code" href="classmpdf.html#b1dae6171ee39a6a05976c7b1007a3c5" title="Returns.">samplecond_m</a> ( <span class="keyword">const</span> vec &cond, vec &ll, <span class="keywordtype">int</span> N ) { |
| 158 | <a name="l00232"></a>00232 this-><a class="code" href="classmpdf.html#0f95a0cc6ab40611f46804682446ed83" title="Update ep so that it represents this mpdf conditioned on rvc = cond.">condition</a> ( cond ); |
| 159 | <a name="l00233"></a>00233 mat temp ( <a class="code" href="classmpdf.html#f6687c07ff07d47812dd565368ca59eb" title="modeled random variable">rv</a>.<a class="code" href="classRV.html#f5c7b8bd589eef09ccdf3329a0addea0" title="Return number of scalars in the RV.">count</a>(),N ); vec smp ( <a class="code" href="classmpdf.html#f6687c07ff07d47812dd565368ca59eb" title="modeled random variable">rv</a>.<a class="code" href="classRV.html#f5c7b8bd589eef09ccdf3329a0addea0" title="Return number of scalars in the RV.">count</a>() ); |
| 160 | <a name="l00234"></a>00234 <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i=0;i<N;i++ ) {smp=<a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>-><a class="code" href="classepdf.html#8019654e494bf5e458f6fb947e11b262" title="Returns a sample, from density .">sample</a>() ;temp.set_col ( i, smp );ll ( i ) =<a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>-><a class="code" href="classepdf.html#e1996af1da1fa1214270066a96ca113e" title="Compute log-probability of argument val.">evallog</a> ( smp );} |
| 161 | <a name="l00235"></a>00235 <span class="keywordflow">return</span> temp; |
| 162 | <a name="l00236"></a>00236 }; |
| 163 | <a name="l00238"></a><a class="code" href="classmpdf.html#0f95a0cc6ab40611f46804682446ed83">00238</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmpdf.html#0f95a0cc6ab40611f46804682446ed83" title="Update ep so that it represents this mpdf conditioned on rvc = cond.">condition</a> ( <span class="keyword">const</span> vec &cond ) {it_error ( <span class="stringliteral">"Not implemented"</span> );}; |
| 164 | <a name="l00239"></a>00239 |
| 165 | <a name="l00241"></a><a class="code" href="classmpdf.html#2ef8a6374029d990a678782f6decebbe">00241</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classmpdf.html#2ef8a6374029d990a678782f6decebbe" title="Shortcut for conditioning and evaluation of the internal epdf. In some cases, this...">evallogcond</a> ( <span class="keyword">const</span> vec &dt, <span class="keyword">const</span> vec &cond ) {<span class="keywordtype">double</span> tmp; this-><a class="code" href="classmpdf.html#0f95a0cc6ab40611f46804682446ed83" title="Update ep so that it represents this mpdf conditioned on rvc = cond.">condition</a> ( cond );tmp = <a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>-><a class="code" href="classepdf.html#e1996af1da1fa1214270066a96ca113e" title="Compute log-probability of argument val.">evallog</a> ( dt ); it_assert_debug(std::isfinite(tmp),<span class="stringliteral">"Infinite value"</span>); <span class="keywordflow">return</span> tmp; |
| 166 | <a name="l00242"></a>00242 }; |
170 | | <a name="l00248"></a><a class="code" href="classmpdf.html#581ecf362185d37c08bb31cb9d046d6f">00248</a> <a class="code" href="classmpdf.html#581ecf362185d37c08bb31cb9d046d6f" title="Default constructor.">mpdf</a> ( <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rv0, <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rvc0 ) :<a class="code" href="classmpdf.html#f6687c07ff07d47812dd565368ca59eb" title="modeled random variable">rv</a> ( rv0 ),<a class="code" href="classmpdf.html#acb7dda792b3cd5576f39fa3129abbab" title="random variable in condition">rvc</a> ( rvc0 ) {}; |
171 | | <a name="l00250"></a><a class="code" href="classmpdf.html#15ef062183b1ccdf794732d5fa0b77cd">00250</a> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> <a class="code" href="classmpdf.html#15ef062183b1ccdf794732d5fa0b77cd" title="access function">_rvc</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="classmpdf.html#acb7dda792b3cd5576f39fa3129abbab" title="random variable in condition">rvc</a>;} |
172 | | <a name="l00252"></a><a class="code" href="classmpdf.html#71256ffb5fbd08f41d650e606a5bd585">00252</a> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> <a class="code" href="classmpdf.html#71256ffb5fbd08f41d650e606a5bd585" title="access function">_rv</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="classmpdf.html#f6687c07ff07d47812dd565368ca59eb" title="modeled random variable">rv</a>;} |
173 | | <a name="l00254"></a><a class="code" href="classmpdf.html#e17780ee5b2cfe05922a6c56af1462f8">00254</a> <a class="code" href="classepdf.html" title="Probability density function with numerical statistics, e.g. posterior density.">epdf</a>& <a class="code" href="classmpdf.html#e17780ee5b2cfe05922a6c56af1462f8" title="access function">_epdf</a>() {<span class="keywordflow">return</span> *<a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>;} |
174 | | <a name="l00255"></a>00255 }; |
175 | | <a name="l00256"></a>00256 |
176 | | <a name="l00259"></a><a class="code" href="classdatalink__e2e.html">00259</a> <span class="keyword">class </span><a class="code" href="classdatalink__e2e.html">datalink_e2e</a> { |
177 | | <a name="l00260"></a>00260 <span class="keyword">protected</span>: |
178 | | <a name="l00262"></a><a class="code" href="classdatalink__e2e.html#3ce1d13efa0b133a4d202c11bd57d216">00262</a> <span class="keywordtype">int</span> <a class="code" href="classdatalink__e2e.html#3ce1d13efa0b133a4d202c11bd57d216" title="Remember how long val should be.">valsize</a>; |
179 | | <a name="l00264"></a><a class="code" href="classdatalink__e2e.html#db962bc6201d1ec12dce00d7c1a8b4f8">00264</a> <span class="keywordtype">int</span> <a class="code" href="classdatalink__e2e.html#db962bc6201d1ec12dce00d7c1a8b4f8" title="Remember how long val of &quot;Up&quot; should be.">valupsize</a>; |
180 | | <a name="l00266"></a><a class="code" href="classdatalink__e2e.html#d4c3a76395b46d9d901eb232aacdafae">00266</a> ivec <a class="code" href="classdatalink__e2e.html#d4c3a76395b46d9d901eb232aacdafae" title="val-to-val link, indeces of the upper val">v2v_up</a>; |
181 | | <a name="l00267"></a>00267 <span class="keyword">public</span>: |
182 | | <a name="l00269"></a><a class="code" href="classdatalink__e2e.html#366d0aca52e56d4108f85390f87c1b9f">00269</a> <a class="code" href="classdatalink__e2e.html#366d0aca52e56d4108f85390f87c1b9f" title="Constructor.">datalink_e2e</a> ( <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rv, <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rv_up ) : |
183 | | <a name="l00270"></a>00270 <a class="code" href="classdatalink__e2e.html#3ce1d13efa0b133a4d202c11bd57d216" title="Remember how long val should be.">valsize</a> ( rv.count() ), <a class="code" href="classdatalink__e2e.html#db962bc6201d1ec12dce00d7c1a8b4f8" title="Remember how long val of &quot;Up&quot; should be.">valupsize</a> ( rv_up.count() ), <a class="code" href="classdatalink__e2e.html#d4c3a76395b46d9d901eb232aacdafae" title="val-to-val link, indeces of the upper val">v2v_up</a> ( rv.dataind ( rv_up ) ) { |
184 | | <a name="l00271"></a>00271 it_assert_debug ( <a class="code" href="classdatalink__e2e.html#d4c3a76395b46d9d901eb232aacdafae" title="val-to-val link, indeces of the upper val">v2v_up</a>.length() ==<a class="code" href="classdatalink__e2e.html#3ce1d13efa0b133a4d202c11bd57d216" title="Remember how long val should be.">valsize</a>,<span class="stringliteral">"rv is not fully in rv_up"</span> ); |
185 | | <a name="l00272"></a>00272 } |
186 | | <a name="l00274"></a><a class="code" href="classdatalink__e2e.html#1b114a76be7aa45bf33697e521fd041d">00274</a> vec <a class="code" href="classdatalink__e2e.html#1b114a76be7aa45bf33697e521fd041d" title="Get val for myself from val of &quot;Up&quot;.">get_val</a> ( <span class="keyword">const</span> vec &val_up ) {it_assert_debug ( <a class="code" href="classdatalink__e2e.html#db962bc6201d1ec12dce00d7c1a8b4f8" title="Remember how long val of &quot;Up&quot; should be.">valupsize</a>==val_up.length(),<span class="stringliteral">"Wrong val_up"</span> ); <span class="keywordflow">return</span> get_vec ( val_up,<a class="code" href="classdatalink__e2e.html#d4c3a76395b46d9d901eb232aacdafae" title="val-to-val link, indeces of the upper val">v2v_up</a> );} |
187 | | <a name="l00276"></a><a class="code" href="classdatalink__e2e.html#1ee38edb1778e8900a8d7535c3b3f053">00276</a> <span class="keywordtype">void</span> <a class="code" href="classdatalink__e2e.html#1ee38edb1778e8900a8d7535c3b3f053" title="Fill val of &quot;Up&quot; by my pieces.">fill_val</a> ( vec &val_up, <span class="keyword">const</span> vec &val ) { |
188 | | <a name="l00277"></a>00277 it_assert_debug ( <a class="code" href="classdatalink__e2e.html#3ce1d13efa0b133a4d202c11bd57d216" title="Remember how long val should be.">valsize</a>==val.length(),<span class="stringliteral">"Wrong val"</span> ); |
189 | | <a name="l00278"></a>00278 it_assert_debug ( <a class="code" href="classdatalink__e2e.html#db962bc6201d1ec12dce00d7c1a8b4f8" title="Remember how long val of &quot;Up&quot; should be.">valupsize</a>==val_up.length(),<span class="stringliteral">"Wrong val_up"</span> ); |
190 | | <a name="l00279"></a>00279 set_subvector ( val_up, <a class="code" href="classdatalink__e2e.html#d4c3a76395b46d9d901eb232aacdafae" title="val-to-val link, indeces of the upper val">v2v_up</a>, val ); |
191 | | <a name="l00280"></a>00280 } |
192 | | <a name="l00281"></a>00281 }; |
193 | | <a name="l00282"></a>00282 |
194 | | <a name="l00284"></a><a class="code" href="classdatalink__m2e.html">00284</a> <span class="keyword">class </span><a class="code" href="classdatalink__m2e.html" title="data link between">datalink_m2e</a>: <span class="keyword">public</span> <a class="code" href="classdatalink__e2e.html">datalink_e2e</a> { |
195 | | <a name="l00285"></a>00285 <span class="keyword">protected</span>: |
196 | | <a name="l00287"></a><a class="code" href="classdatalink__m2e.html#b3927998b71fce3ab030eba1c3c3cec3">00287</a> <span class="keywordtype">int</span> <a class="code" href="classdatalink__m2e.html#b3927998b71fce3ab030eba1c3c3cec3" title="Remember how long cond should be.">condsize</a>; |
197 | | <a name="l00289"></a><a class="code" href="classdatalink__m2e.html#6b46f983c46621b6bfe2b5da3d467d2a">00289</a> ivec <a class="code" href="classdatalink__m2e.html#6b46f983c46621b6bfe2b5da3d467d2a" title="upper_val-to-local_cond link, indeces of the upper val">v2c_up</a>; |
198 | | <a name="l00291"></a><a class="code" href="classdatalink__m2e.html#29604fb622b6a319d2d5d2709fe01f28">00291</a> ivec <a class="code" href="classdatalink__m2e.html#29604fb622b6a319d2d5d2709fe01f28" title="upper_val-to-local_cond link, ideces of the local cond">v2c_lo</a>; |
199 | | <a name="l00292"></a>00292 |
200 | | <a name="l00293"></a>00293 <span class="keyword">public</span>: |
201 | | <a name="l00295"></a><a class="code" href="classdatalink__m2e.html#ff8f6e8a974e22ced461b232fadbdce0">00295</a> <a class="code" href="classdatalink__m2e.html#ff8f6e8a974e22ced461b232fadbdce0" title="Constructor.">datalink_m2e</a> ( <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rv, <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rvc, <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rv_up ) : |
202 | | <a name="l00296"></a>00296 <a class="code" href="classdatalink__e2e.html">datalink_e2e</a> ( rv,rv_up ), <a class="code" href="classdatalink__m2e.html#b3927998b71fce3ab030eba1c3c3cec3" title="Remember how long cond should be.">condsize</a> ( rvc.count() ) { |
203 | | <a name="l00297"></a>00297 <span class="comment">//establish v2c connection</span> |
204 | | <a name="l00298"></a>00298 rvc.<a class="code" href="classRV.html#bb724fa4e2d9ed7bfd0993b5975018a4">dataind</a> ( rv_up, <a class="code" href="classdatalink__m2e.html#29604fb622b6a319d2d5d2709fe01f28" title="upper_val-to-local_cond link, ideces of the local cond">v2c_lo</a>, <a class="code" href="classdatalink__m2e.html#6b46f983c46621b6bfe2b5da3d467d2a" title="upper_val-to-local_cond link, indeces of the upper val">v2c_up</a> ); |
205 | | <a name="l00299"></a>00299 } |
206 | | <a name="l00301"></a><a class="code" href="classdatalink__m2e.html#6db351e5e2158791e97144d212844084">00301</a> vec <a class="code" href="classdatalink__m2e.html#6db351e5e2158791e97144d212844084" title="Construct condition.">get_cond</a> ( <span class="keyword">const</span> vec &val_up ) { |
207 | | <a name="l00302"></a>00302 vec tmp ( <a class="code" href="classdatalink__m2e.html#b3927998b71fce3ab030eba1c3c3cec3" title="Remember how long cond should be.">condsize</a> ); |
208 | | <a name="l00303"></a>00303 set_subvector ( tmp,<a class="code" href="classdatalink__m2e.html#29604fb622b6a319d2d5d2709fe01f28" title="upper_val-to-local_cond link, ideces of the local cond">v2c_lo</a>,val_up ( <a class="code" href="classdatalink__m2e.html#6b46f983c46621b6bfe2b5da3d467d2a" title="upper_val-to-local_cond link, indeces of the upper val">v2c_up</a> ) ); |
209 | | <a name="l00304"></a>00304 <span class="keywordflow">return</span> tmp; |
210 | | <a name="l00305"></a>00305 } |
211 | | <a name="l00306"></a>00306 <span class="keywordtype">void</span> fill_val_cond ( vec &val_up, <span class="keyword">const</span> vec &val, <span class="keyword">const</span> vec &cond ) { |
212 | | <a name="l00307"></a>00307 it_assert_debug ( <a class="code" href="classdatalink__e2e.html#3ce1d13efa0b133a4d202c11bd57d216" title="Remember how long val should be.">valsize</a>==val.length(),<span class="stringliteral">"Wrong val"</span> ); |
213 | | <a name="l00308"></a>00308 it_assert_debug ( <a class="code" href="classdatalink__e2e.html#db962bc6201d1ec12dce00d7c1a8b4f8" title="Remember how long val of &quot;Up&quot; should be.">valupsize</a>==val_up.length(),<span class="stringliteral">"Wrong val_up"</span> ); |
214 | | <a name="l00309"></a>00309 set_subvector ( val_up, <a class="code" href="classdatalink__e2e.html#d4c3a76395b46d9d901eb232aacdafae" title="val-to-val link, indeces of the upper val">v2v_up</a>, val ); |
215 | | <a name="l00310"></a>00310 set_subvector ( val_up, <a class="code" href="classdatalink__m2e.html#6b46f983c46621b6bfe2b5da3d467d2a" title="upper_val-to-local_cond link, indeces of the upper val">v2c_up</a>, cond ); |
216 | | <a name="l00311"></a>00311 } |
217 | | <a name="l00312"></a>00312 }; |
218 | | <a name="l00315"></a><a class="code" href="classdatalink__m2m.html">00315</a> <span class="keyword">class </span><a class="code" href="classdatalink__m2m.html">datalink_m2m</a>: <span class="keyword">public</span> <a class="code" href="classdatalink__m2e.html" title="data link between">datalink_m2e</a> { |
219 | | <a name="l00316"></a>00316 <span class="keyword">protected</span>: |
220 | | <a name="l00318"></a><a class="code" href="classdatalink__m2m.html#d1044bf4846f878290100429600273b2">00318</a> ivec <a class="code" href="classdatalink__m2m.html#d1044bf4846f878290100429600273b2" title="cond-to-cond link, indeces of the upper cond">c2c_up</a>; |
221 | | <a name="l00320"></a><a class="code" href="classdatalink__m2m.html#056193d459cd5e5fd323b5cbc6a55bad">00320</a> ivec <a class="code" href="classdatalink__m2m.html#056193d459cd5e5fd323b5cbc6a55bad" title="cond-to-cond link, indeces of the local cond">c2c_lo</a>; |
222 | | <a name="l00321"></a>00321 <span class="keyword">public</span>: |
223 | | <a name="l00323"></a><a class="code" href="classdatalink__m2m.html#bd64962e779b6dd89529046245a8a98d">00323</a> <a class="code" href="classdatalink__m2m.html#bd64962e779b6dd89529046245a8a98d" title="Constructor.">datalink_m2m</a> ( <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rv, <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rvc, <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rv_up, <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rvc_up ) : |
224 | | <a name="l00324"></a>00324 <a class="code" href="classdatalink__m2e.html" title="data link between">datalink_m2e</a> ( rv, rvc, rv_up) { |
225 | | <a name="l00325"></a>00325 <span class="comment">//establish c2c connection</span> |
226 | | <a name="l00326"></a>00326 rvc.<a class="code" href="classRV.html#bb724fa4e2d9ed7bfd0993b5975018a4">dataind</a> ( rvc_up, <a class="code" href="classdatalink__m2m.html#056193d459cd5e5fd323b5cbc6a55bad" title="cond-to-cond link, indeces of the local cond">c2c_lo</a>, <a class="code" href="classdatalink__m2m.html#d1044bf4846f878290100429600273b2" title="cond-to-cond link, indeces of the upper cond">c2c_up</a> ); |
227 | | <a name="l00327"></a>00327 it_assert_debug(<a class="code" href="classdatalink__m2m.html#056193d459cd5e5fd323b5cbc6a55bad" title="cond-to-cond link, indeces of the local cond">c2c_lo</a>.length()+<a class="code" href="classdatalink__m2e.html#29604fb622b6a319d2d5d2709fe01f28" title="upper_val-to-local_cond link, ideces of the local cond">v2c_lo</a>.length()==<a class="code" href="classdatalink__m2e.html#b3927998b71fce3ab030eba1c3c3cec3" title="Remember how long cond should be.">condsize</a>, <span class="stringliteral">"cond is not fully given"</span>); |
228 | | <a name="l00328"></a>00328 } |
229 | | <a name="l00330"></a><a class="code" href="classdatalink__m2m.html#51dd05760f99282a1da5f51eb88e7e42">00330</a> vec <a class="code" href="classdatalink__m2m.html#51dd05760f99282a1da5f51eb88e7e42" title="Get cond for myself from val and cond of &quot;Up&quot;.">get_cond</a> ( <span class="keyword">const</span> vec &val_up, <span class="keyword">const</span> vec &cond_up ) { |
230 | | <a name="l00331"></a>00331 vec tmp ( <a class="code" href="classdatalink__m2e.html#b3927998b71fce3ab030eba1c3c3cec3" title="Remember how long cond should be.">condsize</a> ); |
231 | | <a name="l00332"></a>00332 set_subvector ( tmp,<a class="code" href="classdatalink__m2e.html#29604fb622b6a319d2d5d2709fe01f28" title="upper_val-to-local_cond link, ideces of the local cond">v2c_lo</a>,val_up ( <a class="code" href="classdatalink__m2e.html#6b46f983c46621b6bfe2b5da3d467d2a" title="upper_val-to-local_cond link, indeces of the upper val">v2c_up</a> ) ); |
232 | | <a name="l00333"></a>00333 set_subvector ( tmp,<a class="code" href="classdatalink__m2m.html#056193d459cd5e5fd323b5cbc6a55bad" title="cond-to-cond link, indeces of the local cond">c2c_lo</a>,cond_up ( <a class="code" href="classdatalink__m2m.html#d1044bf4846f878290100429600273b2" title="cond-to-cond link, indeces of the upper cond">c2c_up</a> ) ); |
233 | | <a name="l00334"></a>00334 <span class="keywordflow">return</span> tmp; |
234 | | <a name="l00335"></a>00335 } |
235 | | <a name="l00337"></a>00337 |
236 | | <a name="l00338"></a>00338 }; |
237 | | <a name="l00339"></a>00339 |
238 | | <a name="l00343"></a><a class="code" href="classmepdf.html">00343</a> <span class="keyword">class </span><a class="code" href="classmepdf.html" title="Unconditional mpdf, allows using epdf in the role of mpdf.">mepdf</a> : <span class="keyword">public</span> <a class="code" href="classmpdf.html" title="Conditional probability density, e.g. modeling some dependencies.">mpdf</a> { |
239 | | <a name="l00344"></a>00344 <span class="keyword">public</span>: |
240 | | <a name="l00346"></a><a class="code" href="classmepdf.html#0f39973ffd94c1e20e2d8aacc4adc6fa">00346</a> <a class="code" href="classmepdf.html#0f39973ffd94c1e20e2d8aacc4adc6fa" title="Default constructor.">mepdf</a> (<span class="keyword">const</span> <a class="code" href="classepdf.html" title="Probability density function with numerical statistics, e.g. posterior density.">epdf</a>* em ) :<a class="code" href="classmpdf.html" title="Conditional probability density, e.g. modeling some dependencies.">mpdf</a> ( em-><a class="code" href="classmpdf.html#71256ffb5fbd08f41d650e606a5bd585" title="access function">_rv</a>(),<a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a>() ) {<a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>=<span class="keyword">const_cast<</span><a class="code" href="classepdf.html" title="Probability density function with numerical statistics, e.g. posterior density.">epdf</a>*<span class="keyword">></span>(em);}; |
241 | | <a name="l00347"></a><a class="code" href="classmepdf.html#bc87d89dbc3cf5eb6a0ad7d6d572488f">00347</a> <span class="keywordtype">void</span> <a class="code" href="classmepdf.html#bc87d89dbc3cf5eb6a0ad7d6d572488f" title="Update ep so that it represents this mpdf conditioned on rvc = cond.">condition</a> ( <span class="keyword">const</span> vec &cond ) {} |
242 | | <a name="l00348"></a>00348 }; |
243 | | <a name="l00349"></a>00349 |
244 | | <a name="l00352"></a><a class="code" href="classcompositepdf.html">00352</a> <span class="keyword">class </span><a class="code" href="classcompositepdf.html" title="Abstract composition of pdfs, a base for specific classes this abstract class is...">compositepdf</a> { |
245 | | <a name="l00353"></a>00353 <span class="keyword">protected</span>: |
246 | | <a name="l00355"></a><a class="code" href="classcompositepdf.html#c1646fe41ff5934d010e54ccaa46133f">00355</a> <span class="keywordtype">int</span> <a class="code" href="classcompositepdf.html#c1646fe41ff5934d010e54ccaa46133f" title="Number of mpdfs in the composite.">n</a>; |
247 | | <a name="l00357"></a><a class="code" href="classcompositepdf.html#637877061b917a16a0421bb5c4cd480d">00357</a> Array<mpdf*> <a class="code" href="classcompositepdf.html#637877061b917a16a0421bb5c4cd480d" title="Elements of composition.">mpdfs</a>; |
248 | | <a name="l00358"></a>00358 <span class="keyword">public</span>: |
249 | | <a name="l00359"></a>00359 <a class="code" href="classcompositepdf.html" title="Abstract composition of pdfs, a base for specific classes this abstract class is...">compositepdf</a> ( Array<mpdf*> A0 ) : <a class="code" href="classcompositepdf.html#c1646fe41ff5934d010e54ccaa46133f" title="Number of mpdfs in the composite.">n</a> ( A0.length() ), <a class="code" href="classcompositepdf.html#637877061b917a16a0421bb5c4cd480d" title="Elements of composition.">mpdfs</a> ( A0 ) {}; |
250 | | <a name="l00361"></a>00361 <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> <a class="code" href="classcompositepdf.html#635d219fb3e32852400d6f98aa4bdc93" title="find common rv, flag">getrv</a> ( <span class="keywordtype">bool</span> checkoverlap=<span class="keyword">false</span> ); |
251 | | <a name="l00363"></a>00363 <span class="keywordtype">void</span> <a class="code" href="classcompositepdf.html#5a4479785c1fdb2cc351fbea07b899ac" title="common rvc of all mpdfs is written to rvc">setrvc</a> ( <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rv, <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rvc ); |
252 | | <a name="l00364"></a>00364 }; |
253 | | <a name="l00365"></a>00365 |
254 | | <a name="l00373"></a><a class="code" href="classDS.html">00373</a> <span class="keyword">class </span><a class="code" href="classDS.html" title="Abstract class for discrete-time sources of data.">DS</a> { |
255 | | <a name="l00374"></a>00374 <span class="keyword">protected</span>: |
256 | | <a name="l00376"></a><a class="code" href="classDS.html#1012025a1a3a1fdd24aa48698a3d3454">00376</a> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> <a class="code" href="classDS.html#1012025a1a3a1fdd24aa48698a3d3454" title="Observed variables, returned by getdata().">Drv</a>; |
257 | | <a name="l00378"></a><a class="code" href="classDS.html#0a88ffaeb3c7c2cf30c69bc41a000629">00378</a> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> <a class="code" href="classDS.html#0a88ffaeb3c7c2cf30c69bc41a000629" title="Action variables, accepted by write().">Urv</a>; <span class="comment">//</span> |
258 | | <a name="l00379"></a>00379 <span class="keyword">public</span>: |
259 | | <a name="l00381"></a>00381 <span class="keywordtype">void</span> <a class="code" href="classDS.html#db2dacc9e71a36eeb9c5c2ee402eeeb1" title="Returns full vector of observed data.">getdata</a> ( vec &dt ); |
260 | | <a name="l00383"></a>00383 <span class="keywordtype">void</span> <a class="code" href="classDS.html#db2dacc9e71a36eeb9c5c2ee402eeeb1" title="Returns full vector of observed data.">getdata</a> ( vec &dt, ivec &indeces ); |
261 | | <a name="l00385"></a>00385 <span class="keywordtype">void</span> <a class="code" href="classDS.html#0dfb6788b70c0d48a1f5276ed6c93039" title="Accepts action variable and schedule it for application.">write</a> ( vec &ut ); |
262 | | <a name="l00387"></a>00387 <span class="keywordtype">void</span> <a class="code" href="classDS.html#0dfb6788b70c0d48a1f5276ed6c93039" title="Accepts action variable and schedule it for application.">write</a> ( vec &ut, ivec &indeces ); |
263 | | <a name="l00393"></a>00393 <span class="keywordtype">void</span> <a class="code" href="classDS.html#9a35ca9c9321dce2bf63bf668f785b75" title="Method that assigns random variables to the datasource. Typically, the datasource...">linkrvs</a> ( <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &drv, <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &urv ); |
264 | | <a name="l00394"></a>00394 |
265 | | <a name="l00396"></a>00396 <span class="keywordtype">void</span> <a class="code" href="classDS.html#470ba89e8e7c3c4d830803221b4e9be6" title="Moves from to , i.e. perfroms the actions and reads response of the system.">step</a>(); |
| 170 | <a name="l00248"></a><a class="code" href="classmpdf.html#6788be9f3a888796499c5293a318fcfb">00248</a> <span class="keyword">virtual</span> <a class="code" href="classmpdf.html#6788be9f3a888796499c5293a318fcfb" title="Destructor for future use;.">~mpdf</a>() {}; |
| 171 | <a name="l00249"></a>00249 |
| 172 | <a name="l00251"></a><a class="code" href="classmpdf.html#581ecf362185d37c08bb31cb9d046d6f">00251</a> <a class="code" href="classmpdf.html#581ecf362185d37c08bb31cb9d046d6f" title="Default constructor.">mpdf</a> ( <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rv0, <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rvc0 ) :<a class="code" href="classmpdf.html#f6687c07ff07d47812dd565368ca59eb" title="modeled random variable">rv</a> ( rv0 ),<a class="code" href="classmpdf.html#acb7dda792b3cd5576f39fa3129abbab" title="random variable in condition">rvc</a> ( rvc0 ) {}; |
| 173 | <a name="l00253"></a><a class="code" href="classmpdf.html#15ef062183b1ccdf794732d5fa0b77cd">00253</a> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> <a class="code" href="classmpdf.html#15ef062183b1ccdf794732d5fa0b77cd" title="access function">_rvc</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="classmpdf.html#acb7dda792b3cd5576f39fa3129abbab" title="random variable in condition">rvc</a>;} |
| 174 | <a name="l00255"></a><a class="code" href="classmpdf.html#71256ffb5fbd08f41d650e606a5bd585">00255</a> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> <a class="code" href="classmpdf.html#71256ffb5fbd08f41d650e606a5bd585" title="access function">_rv</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="classmpdf.html#f6687c07ff07d47812dd565368ca59eb" title="modeled random variable">rv</a>;} |
| 175 | <a name="l00257"></a><a class="code" href="classmpdf.html#e17780ee5b2cfe05922a6c56af1462f8">00257</a> <a class="code" href="classepdf.html" title="Probability density function with numerical statistics, e.g. posterior density.">epdf</a>& <a class="code" href="classmpdf.html#e17780ee5b2cfe05922a6c56af1462f8" title="access function">_epdf</a>() {<span class="keywordflow">return</span> *<a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>;} |
| 176 | <a name="l00258"></a>00258 }; |
| 177 | <a name="l00259"></a>00259 |
| 178 | <a name="l00262"></a><a class="code" href="classdatalink__e2e.html">00262</a> <span class="keyword">class </span><a class="code" href="classdatalink__e2e.html">datalink_e2e</a> { |
| 179 | <a name="l00263"></a>00263 <span class="keyword">protected</span>: |
| 180 | <a name="l00265"></a><a class="code" href="classdatalink__e2e.html#3ce1d13efa0b133a4d202c11bd57d216">00265</a> <span class="keywordtype">int</span> <a class="code" href="classdatalink__e2e.html#3ce1d13efa0b133a4d202c11bd57d216" title="Remember how long val should be.">valsize</a>; |
| 181 | <a name="l00267"></a><a class="code" href="classdatalink__e2e.html#db962bc6201d1ec12dce00d7c1a8b4f8">00267</a> <span class="keywordtype">int</span> <a class="code" href="classdatalink__e2e.html#db962bc6201d1ec12dce00d7c1a8b4f8" title="Remember how long val of &quot;Up&quot; should be.">valupsize</a>; |
| 182 | <a name="l00269"></a><a class="code" href="classdatalink__e2e.html#d4c3a76395b46d9d901eb232aacdafae">00269</a> ivec <a class="code" href="classdatalink__e2e.html#d4c3a76395b46d9d901eb232aacdafae" title="val-to-val link, indeces of the upper val">v2v_up</a>; |
| 183 | <a name="l00270"></a>00270 <span class="keyword">public</span>: |
| 184 | <a name="l00272"></a><a class="code" href="classdatalink__e2e.html#366d0aca52e56d4108f85390f87c1b9f">00272</a> <a class="code" href="classdatalink__e2e.html#366d0aca52e56d4108f85390f87c1b9f" title="Constructor.">datalink_e2e</a> ( <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rv, <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rv_up ) : |
| 185 | <a name="l00273"></a>00273 <a class="code" href="classdatalink__e2e.html#3ce1d13efa0b133a4d202c11bd57d216" title="Remember how long val should be.">valsize</a> ( rv.count() ), <a class="code" href="classdatalink__e2e.html#db962bc6201d1ec12dce00d7c1a8b4f8" title="Remember how long val of &quot;Up&quot; should be.">valupsize</a> ( rv_up.count() ), <a class="code" href="classdatalink__e2e.html#d4c3a76395b46d9d901eb232aacdafae" title="val-to-val link, indeces of the upper val">v2v_up</a> ( rv.dataind ( rv_up ) ) { |
| 186 | <a name="l00274"></a>00274 it_assert_debug ( <a class="code" href="classdatalink__e2e.html#d4c3a76395b46d9d901eb232aacdafae" title="val-to-val link, indeces of the upper val">v2v_up</a>.length() ==<a class="code" href="classdatalink__e2e.html#3ce1d13efa0b133a4d202c11bd57d216" title="Remember how long val should be.">valsize</a>,<span class="stringliteral">"rv is not fully in rv_up"</span> ); |
| 187 | <a name="l00275"></a>00275 } |
| 188 | <a name="l00277"></a><a class="code" href="classdatalink__e2e.html#1b114a76be7aa45bf33697e521fd041d">00277</a> vec <a class="code" href="classdatalink__e2e.html#1b114a76be7aa45bf33697e521fd041d" title="Get val for myself from val of &quot;Up&quot;.">get_val</a> ( <span class="keyword">const</span> vec &val_up ) {it_assert_debug ( <a class="code" href="classdatalink__e2e.html#db962bc6201d1ec12dce00d7c1a8b4f8" title="Remember how long val of &quot;Up&quot; should be.">valupsize</a>==val_up.length(),<span class="stringliteral">"Wrong val_up"</span> ); <span class="keywordflow">return</span> get_vec ( val_up,<a class="code" href="classdatalink__e2e.html#d4c3a76395b46d9d901eb232aacdafae" title="val-to-val link, indeces of the upper val">v2v_up</a> );} |
| 189 | <a name="l00279"></a><a class="code" href="classdatalink__e2e.html#1ee38edb1778e8900a8d7535c3b3f053">00279</a> <span class="keywordtype">void</span> <a class="code" href="classdatalink__e2e.html#1ee38edb1778e8900a8d7535c3b3f053" title="Fill val of &quot;Up&quot; by my pieces.">fill_val</a> ( vec &val_up, <span class="keyword">const</span> vec &val ) { |
| 190 | <a name="l00280"></a>00280 it_assert_debug ( <a class="code" href="classdatalink__e2e.html#3ce1d13efa0b133a4d202c11bd57d216" title="Remember how long val should be.">valsize</a>==val.length(),<span class="stringliteral">"Wrong val"</span> ); |
| 191 | <a name="l00281"></a>00281 it_assert_debug ( <a class="code" href="classdatalink__e2e.html#db962bc6201d1ec12dce00d7c1a8b4f8" title="Remember how long val of &quot;Up&quot; should be.">valupsize</a>==val_up.length(),<span class="stringliteral">"Wrong val_up"</span> ); |
| 192 | <a name="l00282"></a>00282 set_subvector ( val_up, <a class="code" href="classdatalink__e2e.html#d4c3a76395b46d9d901eb232aacdafae" title="val-to-val link, indeces of the upper val">v2v_up</a>, val ); |
| 193 | <a name="l00283"></a>00283 } |
| 194 | <a name="l00284"></a>00284 }; |
| 195 | <a name="l00285"></a>00285 |
| 196 | <a name="l00287"></a><a class="code" href="classdatalink__m2e.html">00287</a> <span class="keyword">class </span><a class="code" href="classdatalink__m2e.html" title="data link between">datalink_m2e</a>: <span class="keyword">public</span> <a class="code" href="classdatalink__e2e.html">datalink_e2e</a> { |
| 197 | <a name="l00288"></a>00288 <span class="keyword">protected</span>: |
| 198 | <a name="l00290"></a><a class="code" href="classdatalink__m2e.html#b3927998b71fce3ab030eba1c3c3cec3">00290</a> <span class="keywordtype">int</span> <a class="code" href="classdatalink__m2e.html#b3927998b71fce3ab030eba1c3c3cec3" title="Remember how long cond should be.">condsize</a>; |
| 199 | <a name="l00292"></a><a class="code" href="classdatalink__m2e.html#6b46f983c46621b6bfe2b5da3d467d2a">00292</a> ivec <a class="code" href="classdatalink__m2e.html#6b46f983c46621b6bfe2b5da3d467d2a" title="upper_val-to-local_cond link, indeces of the upper val">v2c_up</a>; |
| 200 | <a name="l00294"></a><a class="code" href="classdatalink__m2e.html#29604fb622b6a319d2d5d2709fe01f28">00294</a> ivec <a class="code" href="classdatalink__m2e.html#29604fb622b6a319d2d5d2709fe01f28" title="upper_val-to-local_cond link, ideces of the local cond">v2c_lo</a>; |
| 201 | <a name="l00295"></a>00295 |
| 202 | <a name="l00296"></a>00296 <span class="keyword">public</span>: |
| 203 | <a name="l00298"></a><a class="code" href="classdatalink__m2e.html#ff8f6e8a974e22ced461b232fadbdce0">00298</a> <a class="code" href="classdatalink__m2e.html#ff8f6e8a974e22ced461b232fadbdce0" title="Constructor.">datalink_m2e</a> ( <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rv, <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rvc, <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rv_up ) : |
| 204 | <a name="l00299"></a>00299 <a class="code" href="classdatalink__e2e.html">datalink_e2e</a> ( rv,rv_up ), <a class="code" href="classdatalink__m2e.html#b3927998b71fce3ab030eba1c3c3cec3" title="Remember how long cond should be.">condsize</a> ( rvc.count() ) { |
| 205 | <a name="l00300"></a>00300 <span class="comment">//establish v2c connection</span> |
| 206 | <a name="l00301"></a>00301 rvc.<a class="code" href="classRV.html#bb724fa4e2d9ed7bfd0993b5975018a4">dataind</a> ( rv_up, <a class="code" href="classdatalink__m2e.html#29604fb622b6a319d2d5d2709fe01f28" title="upper_val-to-local_cond link, ideces of the local cond">v2c_lo</a>, <a class="code" href="classdatalink__m2e.html#6b46f983c46621b6bfe2b5da3d467d2a" title="upper_val-to-local_cond link, indeces of the upper val">v2c_up</a> ); |
| 207 | <a name="l00302"></a>00302 } |
| 208 | <a name="l00304"></a><a class="code" href="classdatalink__m2e.html#6db351e5e2158791e97144d212844084">00304</a> vec <a class="code" href="classdatalink__m2e.html#6db351e5e2158791e97144d212844084" title="Construct condition.">get_cond</a> ( <span class="keyword">const</span> vec &val_up ) { |
| 209 | <a name="l00305"></a>00305 vec tmp ( <a class="code" href="classdatalink__m2e.html#b3927998b71fce3ab030eba1c3c3cec3" title="Remember how long cond should be.">condsize</a> ); |
| 210 | <a name="l00306"></a>00306 set_subvector ( tmp,<a class="code" href="classdatalink__m2e.html#29604fb622b6a319d2d5d2709fe01f28" title="upper_val-to-local_cond link, ideces of the local cond">v2c_lo</a>,val_up ( <a class="code" href="classdatalink__m2e.html#6b46f983c46621b6bfe2b5da3d467d2a" title="upper_val-to-local_cond link, indeces of the upper val">v2c_up</a> ) ); |
| 211 | <a name="l00307"></a>00307 <span class="keywordflow">return</span> tmp; |
| 212 | <a name="l00308"></a>00308 } |
| 213 | <a name="l00309"></a>00309 <span class="keywordtype">void</span> fill_val_cond ( vec &val_up, <span class="keyword">const</span> vec &val, <span class="keyword">const</span> vec &cond ) { |
| 214 | <a name="l00310"></a>00310 it_assert_debug ( <a class="code" href="classdatalink__e2e.html#3ce1d13efa0b133a4d202c11bd57d216" title="Remember how long val should be.">valsize</a>==val.length(),<span class="stringliteral">"Wrong val"</span> ); |
| 215 | <a name="l00311"></a>00311 it_assert_debug ( <a class="code" href="classdatalink__e2e.html#db962bc6201d1ec12dce00d7c1a8b4f8" title="Remember how long val of &quot;Up&quot; should be.">valupsize</a>==val_up.length(),<span class="stringliteral">"Wrong val_up"</span> ); |
| 216 | <a name="l00312"></a>00312 set_subvector ( val_up, <a class="code" href="classdatalink__e2e.html#d4c3a76395b46d9d901eb232aacdafae" title="val-to-val link, indeces of the upper val">v2v_up</a>, val ); |
| 217 | <a name="l00313"></a>00313 set_subvector ( val_up, <a class="code" href="classdatalink__m2e.html#6b46f983c46621b6bfe2b5da3d467d2a" title="upper_val-to-local_cond link, indeces of the upper val">v2c_up</a>, cond ); |
| 218 | <a name="l00314"></a>00314 } |
| 219 | <a name="l00315"></a>00315 }; |
| 220 | <a name="l00318"></a><a class="code" href="classdatalink__m2m.html">00318</a> <span class="keyword">class </span><a class="code" href="classdatalink__m2m.html">datalink_m2m</a>: <span class="keyword">public</span> <a class="code" href="classdatalink__m2e.html" title="data link between">datalink_m2e</a> { |
| 221 | <a name="l00319"></a>00319 <span class="keyword">protected</span>: |
| 222 | <a name="l00321"></a><a class="code" href="classdatalink__m2m.html#d1044bf4846f878290100429600273b2">00321</a> ivec <a class="code" href="classdatalink__m2m.html#d1044bf4846f878290100429600273b2" title="cond-to-cond link, indeces of the upper cond">c2c_up</a>; |
| 223 | <a name="l00323"></a><a class="code" href="classdatalink__m2m.html#056193d459cd5e5fd323b5cbc6a55bad">00323</a> ivec <a class="code" href="classdatalink__m2m.html#056193d459cd5e5fd323b5cbc6a55bad" title="cond-to-cond link, indeces of the local cond">c2c_lo</a>; |
| 224 | <a name="l00324"></a>00324 <span class="keyword">public</span>: |
| 225 | <a name="l00326"></a><a class="code" href="classdatalink__m2m.html#bd64962e779b6dd89529046245a8a98d">00326</a> <a class="code" href="classdatalink__m2m.html#bd64962e779b6dd89529046245a8a98d" title="Constructor.">datalink_m2m</a> ( <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rv, <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rvc, <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rv_up, <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rvc_up ) : |
| 226 | <a name="l00327"></a>00327 <a class="code" href="classdatalink__m2e.html" title="data link between">datalink_m2e</a> ( rv, rvc, rv_up) { |
| 227 | <a name="l00328"></a>00328 <span class="comment">//establish c2c connection</span> |
| 228 | <a name="l00329"></a>00329 rvc.<a class="code" href="classRV.html#bb724fa4e2d9ed7bfd0993b5975018a4">dataind</a> ( rvc_up, <a class="code" href="classdatalink__m2m.html#056193d459cd5e5fd323b5cbc6a55bad" title="cond-to-cond link, indeces of the local cond">c2c_lo</a>, <a class="code" href="classdatalink__m2m.html#d1044bf4846f878290100429600273b2" title="cond-to-cond link, indeces of the upper cond">c2c_up</a> ); |
| 229 | <a name="l00330"></a>00330 it_assert_debug(<a class="code" href="classdatalink__m2m.html#056193d459cd5e5fd323b5cbc6a55bad" title="cond-to-cond link, indeces of the local cond">c2c_lo</a>.length()+<a class="code" href="classdatalink__m2e.html#29604fb622b6a319d2d5d2709fe01f28" title="upper_val-to-local_cond link, ideces of the local cond">v2c_lo</a>.length()==<a class="code" href="classdatalink__m2e.html#b3927998b71fce3ab030eba1c3c3cec3" title="Remember how long cond should be.">condsize</a>, <span class="stringliteral">"cond is not fully given"</span>); |
| 230 | <a name="l00331"></a>00331 } |
| 231 | <a name="l00333"></a><a class="code" href="classdatalink__m2m.html#51dd05760f99282a1da5f51eb88e7e42">00333</a> vec <a class="code" href="classdatalink__m2m.html#51dd05760f99282a1da5f51eb88e7e42" title="Get cond for myself from val and cond of &quot;Up&quot;.">get_cond</a> ( <span class="keyword">const</span> vec &val_up, <span class="keyword">const</span> vec &cond_up ) { |
| 232 | <a name="l00334"></a>00334 vec tmp ( <a class="code" href="classdatalink__m2e.html#b3927998b71fce3ab030eba1c3c3cec3" title="Remember how long cond should be.">condsize</a> ); |
| 233 | <a name="l00335"></a>00335 set_subvector ( tmp,<a class="code" href="classdatalink__m2e.html#29604fb622b6a319d2d5d2709fe01f28" title="upper_val-to-local_cond link, ideces of the local cond">v2c_lo</a>,val_up ( <a class="code" href="classdatalink__m2e.html#6b46f983c46621b6bfe2b5da3d467d2a" title="upper_val-to-local_cond link, indeces of the upper val">v2c_up</a> ) ); |
| 234 | <a name="l00336"></a>00336 set_subvector ( tmp,<a class="code" href="classdatalink__m2m.html#056193d459cd5e5fd323b5cbc6a55bad" title="cond-to-cond link, indeces of the local cond">c2c_lo</a>,cond_up ( <a class="code" href="classdatalink__m2m.html#d1044bf4846f878290100429600273b2" title="cond-to-cond link, indeces of the upper cond">c2c_up</a> ) ); |
| 235 | <a name="l00337"></a>00337 <span class="keywordflow">return</span> tmp; |
| 236 | <a name="l00338"></a>00338 } |
| 237 | <a name="l00340"></a>00340 |
| 238 | <a name="l00341"></a>00341 }; |
| 239 | <a name="l00342"></a>00342 |
| 240 | <a name="l00346"></a><a class="code" href="classmepdf.html">00346</a> <span class="keyword">class </span><a class="code" href="classmepdf.html" title="Unconditional mpdf, allows using epdf in the role of mpdf.">mepdf</a> : <span class="keyword">public</span> <a class="code" href="classmpdf.html" title="Conditional probability density, e.g. modeling some dependencies.">mpdf</a> { |
| 241 | <a name="l00347"></a>00347 <span class="keyword">public</span>: |
| 242 | <a name="l00349"></a><a class="code" href="classmepdf.html#0f39973ffd94c1e20e2d8aacc4adc6fa">00349</a> <a class="code" href="classmepdf.html#0f39973ffd94c1e20e2d8aacc4adc6fa" title="Default constructor.">mepdf</a> (<span class="keyword">const</span> <a class="code" href="classepdf.html" title="Probability density function with numerical statistics, e.g. posterior density.">epdf</a>* em ) :<a class="code" href="classmpdf.html" title="Conditional probability density, e.g. modeling some dependencies.">mpdf</a> ( em-><a class="code" href="classmpdf.html#71256ffb5fbd08f41d650e606a5bd585" title="access function">_rv</a>(),<a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a>() ) {<a class="code" href="classmpdf.html#7aa894208a32f3487827df6d5054424c" title="pointer to internal epdf">ep</a>=<span class="keyword">const_cast<</span><a class="code" href="classepdf.html" title="Probability density function with numerical statistics, e.g. posterior density.">epdf</a>*<span class="keyword">></span>(em);}; |
| 243 | <a name="l00350"></a><a class="code" href="classmepdf.html#bc87d89dbc3cf5eb6a0ad7d6d572488f">00350</a> <span class="keywordtype">void</span> <a class="code" href="classmepdf.html#bc87d89dbc3cf5eb6a0ad7d6d572488f" title="Update ep so that it represents this mpdf conditioned on rvc = cond.">condition</a> ( <span class="keyword">const</span> vec &cond ) {} |
| 244 | <a name="l00351"></a>00351 }; |
| 245 | <a name="l00352"></a>00352 |
| 246 | <a name="l00355"></a><a class="code" href="classcompositepdf.html">00355</a> <span class="keyword">class </span><a class="code" href="classcompositepdf.html" title="Abstract composition of pdfs, a base for specific classes this abstract class is...">compositepdf</a> { |
| 247 | <a name="l00356"></a>00356 <span class="keyword">protected</span>: |
| 248 | <a name="l00358"></a><a class="code" href="classcompositepdf.html#c1646fe41ff5934d010e54ccaa46133f">00358</a> <span class="keywordtype">int</span> <a class="code" href="classcompositepdf.html#c1646fe41ff5934d010e54ccaa46133f" title="Number of mpdfs in the composite.">n</a>; |
| 249 | <a name="l00360"></a><a class="code" href="classcompositepdf.html#637877061b917a16a0421bb5c4cd480d">00360</a> Array<mpdf*> <a class="code" href="classcompositepdf.html#637877061b917a16a0421bb5c4cd480d" title="Elements of composition.">mpdfs</a>; |
| 250 | <a name="l00361"></a>00361 <span class="keyword">public</span>: |
| 251 | <a name="l00362"></a>00362 <a class="code" href="classcompositepdf.html" title="Abstract composition of pdfs, a base for specific classes this abstract class is...">compositepdf</a> ( Array<mpdf*> A0 ) : <a class="code" href="classcompositepdf.html#c1646fe41ff5934d010e54ccaa46133f" title="Number of mpdfs in the composite.">n</a> ( A0.length() ), <a class="code" href="classcompositepdf.html#637877061b917a16a0421bb5c4cd480d" title="Elements of composition.">mpdfs</a> ( A0 ) {}; |
| 252 | <a name="l00364"></a>00364 <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> <a class="code" href="classcompositepdf.html#635d219fb3e32852400d6f98aa4bdc93" title="find common rv, flag">getrv</a> ( <span class="keywordtype">bool</span> checkoverlap=<span class="keyword">false</span> ); |
| 253 | <a name="l00366"></a>00366 <span class="keywordtype">void</span> <a class="code" href="classcompositepdf.html#5a4479785c1fdb2cc351fbea07b899ac" title="common rvc of all mpdfs is written to rvc">setrvc</a> ( <span class="keyword">const</span> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rv, <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &rvc ); |
| 254 | <a name="l00367"></a>00367 }; |
| 255 | <a name="l00368"></a>00368 |
| 256 | <a name="l00376"></a><a class="code" href="classDS.html">00376</a> <span class="keyword">class </span><a class="code" href="classDS.html" title="Abstract class for discrete-time sources of data.">DS</a> { |
| 257 | <a name="l00377"></a>00377 <span class="keyword">protected</span>: |
| 258 | <a name="l00379"></a><a class="code" href="classDS.html#1012025a1a3a1fdd24aa48698a3d3454">00379</a> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> <a class="code" href="classDS.html#1012025a1a3a1fdd24aa48698a3d3454" title="Observed variables, returned by getdata().">Drv</a>; |
| 259 | <a name="l00381"></a><a class="code" href="classDS.html#0a88ffaeb3c7c2cf30c69bc41a000629">00381</a> <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> <a class="code" href="classDS.html#0a88ffaeb3c7c2cf30c69bc41a000629" title="Action variables, accepted by write().">Urv</a>; <span class="comment">//</span> |
| 260 | <a name="l00382"></a>00382 <span class="keyword">public</span>: |
| 261 | <a name="l00384"></a>00384 <span class="keywordtype">void</span> <a class="code" href="classDS.html#db2dacc9e71a36eeb9c5c2ee402eeeb1" title="Returns full vector of observed data.">getdata</a> ( vec &dt ); |
| 262 | <a name="l00386"></a>00386 <span class="keywordtype">void</span> <a class="code" href="classDS.html#db2dacc9e71a36eeb9c5c2ee402eeeb1" title="Returns full vector of observed data.">getdata</a> ( vec &dt, ivec &indeces ); |
| 263 | <a name="l00388"></a>00388 <span class="keywordtype">void</span> <a class="code" href="classDS.html#0dfb6788b70c0d48a1f5276ed6c93039" title="Accepts action variable and schedule it for application.">write</a> ( vec &ut ); |
| 264 | <a name="l00390"></a>00390 <span class="keywordtype">void</span> <a class="code" href="classDS.html#0dfb6788b70c0d48a1f5276ed6c93039" title="Accepts action variable and schedule it for application.">write</a> ( vec &ut, ivec &indeces ); |
| 265 | <a name="l00396"></a>00396 <span class="keywordtype">void</span> <a class="code" href="classDS.html#9a35ca9c9321dce2bf63bf668f785b75" title="Method that assigns random variables to the datasource. Typically, the datasource...">linkrvs</a> ( <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &drv, <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> &urv ); |