Show
Ignore:
Timestamp:
09/12/09 11:41:43 (15 years ago)
Author:
smidl
Message:

doc

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/doc/html/mex__datasource_8h_source.html

    r591 r608  
    6565    </ul> 
    6666  </div> 
    67 <h1>mex_datasource.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include &quot;../bdm/bdmerror.h&quot;</span> 
    68 <a name="l00002"></a>00002 <span class="preprocessor">#include &quot;../bdm/stat/datasources.h&quot;</span> 
    69 <a name="l00003"></a>00003 <span class="preprocessor">#include &quot;mex_parser.h&quot;</span> 
     67<h1>mex_datasource.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef MXDS_H</span> 
     68<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define MXDS_H</span> 
     69<a name="l00003"></a>00003 <span class="preprocessor"></span> 
    7070<a name="l00004"></a>00004  
    71 <a name="l00005"></a>00005 <span class="keyword">namespace </span>bdm { 
    72 <a name="l00013"></a><a class="code" href="classbdm_1_1MexDS.html">00013</a> <span class="keyword">class </span><a class="code" href="classbdm_1_1MexDS.html" title="Memory storage of off-line data column-wise.">MexDS</a> : <span class="keyword">public</span> <a class="code" href="classbdm_1_1MemDS.html" title="Memory storage of off-line data column-wise.">MemDS</a> { 
    73 <a name="l00015"></a>00015         <a class="code" href="classbdm_1_1MexDS.html" title="Memory storage of off-line data column-wise.">MexDS</a> () {}; 
    74 <a name="l00016"></a>00016  
    75 <a name="l00034"></a>00034         <span class="keywordtype">void</span> from_setting ( <span class="keyword">const</span> Setting &amp;<span class="keyword">set</span> ) { 
    76 <a name="l00035"></a>00035                 <a class="code" href="classbdm_1_1MemDS.html#aa724f4cbfc32e79bacc044253234e260" title="internal matrix of data">Data</a> = mxArray2mat ( mexGetVariable ( <span class="stringliteral">&quot;base&quot;</span>, <span class="keyword">set</span>[<span class="stringliteral">&quot;varname&quot;</span>] ) ); 
    77 <a name="l00036"></a>00036                 <a class="code" href="classbdm_1_1UI.html#acd1667e6fec99ec64dabcb3ca2ff922d">UI::get</a> ( <a class="code" href="classbdm_1_1MemDS.html#a865814d49913dcf672bb20a4334d3dc4" title="vector of rows that are presented in Dt">rowid</a>, <span class="keyword">set</span>, <span class="stringliteral">&quot;rids&quot;</span> , UI::compulsory ); 
    78 <a name="l00037"></a>00037                 <a class="code" href="bdmerror_8h.html#a89a0f906b242b79c5d3d342291b2cab4" title="Throw std::runtime_exception if t is not true and NDEBUG is not defined.">bdm_assert_debug</a> ( max ( <a class="code" href="classbdm_1_1MemDS.html#a865814d49913dcf672bb20a4334d3dc4" title="vector of rows that are presented in Dt">rowid</a> ) &lt;= <a class="code" href="classbdm_1_1MemDS.html#aa724f4cbfc32e79bacc044253234e260" title="internal matrix of data">Data</a>.rows(), <span class="stringliteral">&quot;MemDS rowid is too high for given Dat.&quot;</span> ); 
    79 <a name="l00038"></a>00038  
    80 <a name="l00039"></a>00039                 <a class="code" href="classbdm_1_1UI.html#acd1667e6fec99ec64dabcb3ca2ff922d">UI::get</a> ( <a class="code" href="classbdm_1_1MemDS.html#a166522aed4d3b12d9b3c2afaf6673301" title="vector of delays that are presented in Dt">delays</a>, <span class="keyword">set</span>, <span class="stringliteral">&quot;tds&quot;</span>, UI::compulsory ); 
    81 <a name="l00040"></a>00040                 <a class="code" href="classbdm_1_1MemDS.html#a681ee3831f68f4f20ed54e04e8b3f107" title="active column in the Data matrix">time</a> = max ( <a class="code" href="classbdm_1_1MemDS.html#a166522aed4d3b12d9b3c2afaf6673301" title="vector of delays that are presented in Dt">delays</a> ); 
    82 <a name="l00041"></a>00041                 <a class="code" href="bdmerror_8h.html#a89a0f906b242b79c5d3d342291b2cab4" title="Throw std::runtime_exception if t is not true and NDEBUG is not defined.">bdm_assert_debug</a> ( <a class="code" href="classbdm_1_1MemDS.html#a681ee3831f68f4f20ed54e04e8b3f107" title="active column in the Data matrix">time</a> &lt; <a class="code" href="classbdm_1_1MemDS.html#aa724f4cbfc32e79bacc044253234e260" title="internal matrix of data">Data</a>.cols(), <span class="stringliteral">&quot;MemDS delays are too high.&quot;</span> ); 
    83 <a name="l00042"></a>00042  
    84 <a name="l00043"></a>00043                 <a class="code" href="classbdm_1_1shared__ptr.html" title="A naive implementation of roughly a subset of the std::tr1::shared_ptr spec.">shared_ptr&lt;RV&gt;</a> r = UI::build&lt;RV&gt; ( <span class="keyword">set</span>, <span class="stringliteral">&quot;rv&quot;</span>, UI::compulsory ); 
    85 <a name="l00044"></a>00044                 <a class="code" href="classbdm_1_1RV.html" title="Class representing variables, most often random variables.">RV</a> ru = <a class="code" href="classbdm_1_1RV.html" title="Class representing variables, most often random variables.">RV</a>(); 
    86 <a name="l00045"></a>00045                 set_rvs ( *r, ru ); 
    87 <a name="l00046"></a>00046         } 
    88 <a name="l00047"></a>00047  
    89 <a name="l00048"></a>00048  
    90 <a name="l00049"></a>00049         <span class="comment">// TODO dodelat void to_setting( Setting &amp;set ) const;</span> 
    91 <a name="l00050"></a>00050 }; 
    92 <a name="l00051"></a>00051  
    93 <a name="l00052"></a>00052 <a class="code" href="user__info_8h.html#a4f9de2f17e844047726487b99def99c6" title="Macro for registration of class into map of user-infos, registered class is scriptable...">UIREGISTER</a> ( <a class="code" href="classbdm_1_1MexDS.html" title="Memory storage of off-line data column-wise.">MexDS</a> ); 
    94 <a name="l00053"></a>00053 SHAREDPTR ( <a class="code" href="classbdm_1_1MexDS.html" title="Memory storage of off-line data column-wise.">MexDS</a> ); 
    95 <a name="l00054"></a>00054  
    96 <a name="l00055"></a>00055 } 
     71<a name="l00005"></a>00005 <span class="preprocessor">#include &quot;../bdm/bdmerror.h&quot;</span> 
     72<a name="l00006"></a>00006 <span class="preprocessor">#include &quot;../bdm/base/datasources.h&quot;</span> 
     73<a name="l00007"></a>00007 <span class="preprocessor">#include &quot;mex_parser.h&quot;</span> 
     74<a name="l00008"></a>00008  
     75<a name="l00009"></a>00009 <span class="keyword">namespace </span>bdm { 
     76<a name="l00017"></a><a class="code" href="classbdm_1_1mxArrayDS.html">00017</a> <span class="keyword">class </span><a class="code" href="classbdm_1_1mxArrayDS.html" title="Memory storage of off-line data column-wise.">mxArrayDS</a> : <span class="keyword">public</span> <a class="code" href="classbdm_1_1MemDS.html" title="Memory storage of off-line data column-wise.">MemDS</a> { 
     77<a name="l00018"></a>00018         <span class="keyword">public</span>: 
     78<a name="l00020"></a><a class="code" href="classbdm_1_1mxArrayDS.html#a6f0733375782b996aa567485ea362bb8">00020</a>         <a class="code" href="classbdm_1_1mxArrayDS.html#a6f0733375782b996aa567485ea362bb8" title="Default constructor.">mxArrayDS</a> ():<a class="code" href="classbdm_1_1MemDS.html" title="Memory storage of off-line data column-wise.">MemDS</a>() {}; 
     79<a name="l00021"></a>00021  
     80<a name="l00035"></a><a class="code" href="classbdm_1_1mxArrayDS.html#a3f8986832001f54ef808edaf3988d025">00035</a>         <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1mxArrayDS.html#a3f8986832001f54ef808edaf3988d025" title="Create memory data source from mxArray.">from_setting</a> ( <span class="keyword">const</span> Setting &amp;<span class="keyword">set</span> ) { 
     81<a name="l00036"></a>00036                 <a class="code" href="classbdm_1_1MemDS.html#aa724f4cbfc32e79bacc044253234e260" title="internal matrix of data">Data</a> = mxArray2mat ( mexGetVariable ( <span class="stringliteral">&quot;base&quot;</span>, <span class="keyword">set</span>[<span class="stringliteral">&quot;varname&quot;</span>] ) ); 
     82<a name="l00037"></a>00037 <span class="comment">/*              UI::get ( rowid, set, &quot;rids&quot; , UI::compulsory );</span> 
     83<a name="l00038"></a>00038 <span class="comment">                bdm_assert_debug ( max ( rowid ) &lt;= Data.rows(), &quot;MemDS rowid is too high for given Dat.&quot; );</span> 
     84<a name="l00039"></a>00039 <span class="comment"></span> 
     85<a name="l00040"></a>00040 <span class="comment">                UI::get ( delays, set, &quot;tds&quot;, UI::compulsory );</span> 
     86<a name="l00041"></a>00041 <span class="comment">                time = max ( delays );</span> 
     87<a name="l00042"></a>00042 <span class="comment">                bdm_assert_debug ( time &lt; Data.cols(), &quot;MemDS delays are too high.&quot; );</span> 
     88<a name="l00043"></a>00043 <span class="comment">*/</span> 
     89<a name="l00044"></a>00044                 <span class="comment">//set MemDS</span> 
     90<a name="l00045"></a>00045                 <a class="code" href="classbdm_1_1MemDS.html#a865814d49913dcf672bb20a4334d3dc4" title="vector of rows that are presented in Dt">rowid</a> = linspace(0,<a class="code" href="classbdm_1_1MemDS.html#aa724f4cbfc32e79bacc044253234e260" title="internal matrix of data">Data</a>.rows()-1); 
     91<a name="l00046"></a>00046                 <a class="code" href="classbdm_1_1MemDS.html#a166522aed4d3b12d9b3c2afaf6673301" title="vector of delays that are presented in Dt">delays</a> = zeros_i(<a class="code" href="classbdm_1_1MemDS.html#aa724f4cbfc32e79bacc044253234e260" title="internal matrix of data">Data</a>.rows()); 
     92<a name="l00047"></a>00047                 <a class="code" href="classbdm_1_1DS.html#af96cae44624e79638a91ec4f2c7c81a9" title="size of data returned by getdata() ">dtsize</a>=<a class="code" href="classbdm_1_1MemDS.html#a865814d49913dcf672bb20a4334d3dc4" title="vector of rows that are presented in Dt">rowid</a>.length(); 
     93<a name="l00048"></a>00048                 <a class="code" href="classbdm_1_1DS.html#ad7467046a0bd05bc992cc5e1bdedb983" title="size of data">utsize</a>=0; 
     94<a name="l00049"></a>00049                  
     95<a name="l00050"></a>00050                 <a class="code" href="classbdm_1_1shared__ptr.html" title="A naive implementation of roughly a subset of the std::tr1::shared_ptr spec.">shared_ptr&lt;RV&gt;</a> r = UI::build&lt;RV&gt; ( <span class="keyword">set</span>, <span class="stringliteral">&quot;rv&quot;</span>, UI::optional ); 
     96<a name="l00051"></a>00051                 <a class="code" href="classbdm_1_1RV.html" title="Class representing variables, most often random variables.">RV</a> ru = <a class="code" href="classbdm_1_1RV.html" title="Class representing variables, most often random variables.">RV</a>(); 
     97<a name="l00052"></a>00052                 <span class="keywordflow">if</span> (r){ 
     98<a name="l00053"></a>00053                         set_rvs ( *r, ru ); 
     99<a name="l00054"></a>00054                 } <span class="keywordflow">else</span> { 
     100<a name="l00055"></a>00055                         <a class="code" href="classbdm_1_1RV.html" title="Class representing variables, most often random variables.">RV</a> def((<span class="keyword">const</span> <span class="keywordtype">char</span>*)<span class="keyword">set</span>[<span class="stringliteral">&quot;varname&quot;</span>],<a class="code" href="classbdm_1_1MemDS.html#aa724f4cbfc32e79bacc044253234e260" title="internal matrix of data">Data</a>.rows()); 
     101<a name="l00056"></a>00056                         set_rvs(def, ru); 
     102<a name="l00057"></a>00057                 } 
     103<a name="l00058"></a>00058         } 
     104<a name="l00059"></a>00059  
     105<a name="l00060"></a>00060  
     106<a name="l00061"></a>00061         <span class="comment">// TODO dodelat void to_setting( Setting &amp;set ) const;</span> 
     107<a name="l00062"></a>00062 }; 
     108<a name="l00063"></a>00063  
     109<a name="l00064"></a>00064 <a class="code" href="user__info_8h.html#a4f9de2f17e844047726487b99def99c6" title="Macro for registration of class into map of user-infos, registered class is scriptable...">UIREGISTER</a> ( mxArrayDS ); 
     110<a name="l00065"></a>00065 SHAREDPTR ( mxArrayDS ); 
     111<a name="l00066"></a>00066  
     112<a name="l00075"></a><a class="code" href="classbdm_1_1mexDS.html">00075</a> <span class="keyword">class </span><a class="code" href="classbdm_1_1mexDS.html" title="Matlab wrapper for DS mapping functions step() to a matlab function.">mexDS</a> : <span class="keyword">public</span> <a class="code" href="classbdm_1_1DS.html" title="Abstract class for discrete-time sources of data.">DS</a> { 
     113<a name="l00076"></a>00076         <span class="keyword">protected</span>: 
     114<a name="l00078"></a><a class="code" href="classbdm_1_1mexDS.html#a5ef7f516ff47b8355a682d8c40dc908f">00078</a>                 <span class="keywordtype">string</span> <a class="code" href="classbdm_1_1mexDS.html#a5ef7f516ff47b8355a682d8c40dc908f" title="identifier of matlab function">step_name</a>; 
     115<a name="l00080"></a><a class="code" href="classbdm_1_1mexDS.html#acfc4e8e5da04afde522bd23b07ab9230">00080</a>                 <span class="keywordtype">string</span> <a class="code" href="classbdm_1_1mexDS.html#acfc4e8e5da04afde522bd23b07ab9230" title="identifier of matlab input variabel">input_name</a>; 
     116<a name="l00082"></a><a class="code" href="classbdm_1_1mexDS.html#abe43c4f080b96eed869071ab54dcd3d0">00082</a>                 vec <a class="code" href="classbdm_1_1mexDS.html#abe43c4f080b96eed869071ab54dcd3d0" title="cache of results from name_step">dt</a>; 
     117<a name="l00084"></a><a class="code" href="classbdm_1_1mexDS.html#a3b4f1f85ecbe6f2d4ac3aa197b4bf1cf">00084</a>                 vec <a class="code" href="classbdm_1_1mexDS.html#a3b4f1f85ecbe6f2d4ac3aa197b4bf1cf" title="cache of inputs">ut</a>; 
     118<a name="l00085"></a>00085         <span class="keyword">public</span>: 
     119<a name="l00087"></a><a class="code" href="classbdm_1_1mexDS.html#aca52c608ce9317abadc964b66ad12fa7">00087</a>         <a class="code" href="classbdm_1_1mexDS.html#aca52c608ce9317abadc964b66ad12fa7" title="Default constructor.">mexDS</a> ():<a class="code" href="classbdm_1_1DS.html" title="Abstract class for discrete-time sources of data.">DS</a>() {}; 
     120<a name="l00088"></a>00088  
     121<a name="l00104"></a><a class="code" href="classbdm_1_1mexDS.html#a850902c28c607e11a624643b56592cf1">00104</a>         <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1mexDS.html#a850902c28c607e11a624643b56592cf1" title="Create memory data source from mxArray.">from_setting</a> ( <span class="keyword">const</span> Setting &amp;<span class="keyword">set</span> ) { 
     122<a name="l00105"></a>00105                 <a class="code" href="classbdm_1_1UI.html#acd1667e6fec99ec64dabcb3ca2ff922d">UI::get</a>(<a class="code" href="classbdm_1_1mexDS.html#a5ef7f516ff47b8355a682d8c40dc908f" title="identifier of matlab function">step_name</a>, <span class="keyword">set</span>, <span class="stringliteral">&quot;step_name&quot;</span>, UI::compulsory); 
     123<a name="l00106"></a>00106                 <a class="code" href="classbdm_1_1UI.html#acd1667e6fec99ec64dabcb3ca2ff922d">UI::get</a>(<a class="code" href="classbdm_1_1mexDS.html#acfc4e8e5da04afde522bd23b07ab9230" title="identifier of matlab input variabel">input_name</a>, <span class="keyword">set</span>, <span class="stringliteral">&quot;input_name&quot;</span>, UI::compulsory); 
     124<a name="l00107"></a>00107                  
     125<a name="l00108"></a>00108                 <a class="code" href="classbdm_1_1shared__ptr.html" title="A naive implementation of roughly a subset of the std::tr1::shared_ptr spec.">shared_ptr&lt;RV&gt;</a> ry = UI::build&lt;RV&gt; ( <span class="keyword">set</span>, <span class="stringliteral">&quot;rv_out&quot;</span>, UI::compulsory ); 
     126<a name="l00109"></a>00109                 <a class="code" href="classbdm_1_1shared__ptr.html" title="A naive implementation of roughly a subset of the std::tr1::shared_ptr spec.">shared_ptr&lt;RV&gt;</a> ru = UI::build&lt;RV&gt; ( <span class="keyword">set</span>, <span class="stringliteral">&quot;rv_in&quot;</span>, UI::compulsory); 
     127<a name="l00110"></a>00110  
     128<a name="l00111"></a>00111                 <a class="code" href="classbdm_1_1DS.html#af96cae44624e79638a91ec4f2c7c81a9" title="size of data returned by getdata() ">dtsize</a>=ry-&gt;_dsize(); 
     129<a name="l00112"></a>00112                 <a class="code" href="classbdm_1_1DS.html#ad7467046a0bd05bc992cc5e1bdedb983" title="size of data">utsize</a>=ru-&gt;_dsize(); 
     130<a name="l00113"></a>00113  
     131<a name="l00114"></a>00114                 <a class="code" href="classbdm_1_1DS.html#a3a92d77fd97fdb6bf1c8edb1e38c6bbc" title="set random variables">set_drv</a>(*ry, *ru); 
     132<a name="l00115"></a>00115         } 
     133<a name="l00116"></a>00116          
     134<a name="l00117"></a><a class="code" href="classbdm_1_1mexDS.html#a0b45e92047ef1676ad19a42902956c8b">00117</a>         <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1mexDS.html#a0b45e92047ef1676ad19a42902956c8b" title="Moves from  to , i.e. perfroms the actions and reads response of the system.">step</a>() { 
     135<a name="l00118"></a>00118                 mxArray* tmp; 
     136<a name="l00119"></a>00119                 mxArray* tmp2; 
     137<a name="l00120"></a>00120                 <span class="comment">// write inputs to variable input_name</span> 
     138<a name="l00121"></a>00121                 mxArray* mxinp= mexGetVariable ( <span class="stringliteral">&quot;global&quot;</span>, <a class="code" href="classbdm_1_1mexDS.html#acfc4e8e5da04afde522bd23b07ab9230" title="identifier of matlab input variabel">input_name</a>.c_str()) ; 
     139<a name="l00122"></a>00122                 vec2mxArray(<a class="code" href="classbdm_1_1mexDS.html#a3b4f1f85ecbe6f2d4ac3aa197b4bf1cf" title="cache of inputs">ut</a>, mxinp); 
     140<a name="l00123"></a>00123                 <span class="comment">// call function step_name</span> 
     141<a name="l00124"></a>00124                 mexCallMATLAB(1, &amp;tmp, 0, (mxArray **) &amp;tmp2, <a class="code" href="classbdm_1_1mexDS.html#a5ef7f516ff47b8355a682d8c40dc908f" title="identifier of matlab function">step_name</a>.c_str()); 
     142<a name="l00125"></a>00125                 <span class="comment">// save its results</span> 
     143<a name="l00126"></a>00126                 <a class="code" href="classbdm_1_1mexDS.html#abe43c4f080b96eed869071ab54dcd3d0" title="cache of results from name_step">dt</a>=mxArray2vec(tmp); 
     144<a name="l00127"></a>00127         } 
     145<a name="l00128"></a><a class="code" href="classbdm_1_1mexDS.html#a2cae170c220af9ede0e3a335e404377e">00128</a>         <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1mexDS.html#a2cae170c220af9ede0e3a335e404377e" title="Accepts action variable and schedule it for application.">write</a>(vec &amp;ut0){ <a class="code" href="classbdm_1_1mexDS.html#a3b4f1f85ecbe6f2d4ac3aa197b4bf1cf" title="cache of inputs">ut</a>=ut0;} 
     146<a name="l00129"></a><a class="code" href="classbdm_1_1mexDS.html#a48e5a3ae6ce22a03e8325a10db1c04b4">00129</a>         <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1mexDS.html#a48e5a3ae6ce22a03e8325a10db1c04b4" title="Returns full vector of observed data=[output, input].">getdata</a>(vec &amp;dt_out){dt_out = <a class="code" href="classbdm_1_1mexDS.html#abe43c4f080b96eed869071ab54dcd3d0" title="cache of results from name_step">dt</a>;  } 
     147<a name="l00130"></a>00130  
     148<a name="l00131"></a>00131  
     149<a name="l00132"></a>00132         <span class="comment">// TODO dodelat void to_setting( Setting &amp;set ) const;</span> 
     150<a name="l00133"></a>00133 }; 
     151<a name="l00134"></a>00134  
     152<a name="l00135"></a>00135 <a class="code" href="user__info_8h.html#a4f9de2f17e844047726487b99def99c6" title="Macro for registration of class into map of user-infos, registered class is scriptable...">UIREGISTER</a> ( mexDS ); 
     153<a name="l00136"></a>00136 SHAREDPTR ( mexDS ); 
     154<a name="l00137"></a>00137  
     155<a name="l00138"></a>00138 } 
     156<a name="l00139"></a>00139 <span class="preprocessor">#endif //MXDS_H</span> 
    97157</pre></div></div> 
    98 <hr size="1"/><address style="text-align: right;"><small>Generated on Sun Aug 30 22:10:49 2009 for mixpp by&nbsp; 
     158<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Sep 8 22:11:32 2009 for mixpp by&nbsp; 
    99159<a href="http://www.doxygen.org/index.html"> 
    100160<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>