Show
Ignore:
Timestamp:
08/30/09 22:13:15 (15 years ago)
Author:
smidl
Message:

doc

Files:
1 modified

Legend:

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

    r472 r591  
    1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 
     1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
     2<html xmlns="http://www.w3.org/1999/xhtml"> 
     3<head> 
     4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 
    35<title>mixpp: mex_logger.h Source File</title> 
    4 <link href="tabs.css" rel="stylesheet" type="text/css"> 
    5 <link href="doxygen.css" rel="stylesheet" type="text/css"> 
    6 </head><body> 
    7 <!-- Generated by Doxygen 1.5.9 --> 
     6<link href="tabs.css" rel="stylesheet" type="text/css"/> 
     7<link href="doxygen.css" rel="stylesheet" type="text/css"/> 
     8</head> 
     9<body> 
     10<!-- Generated by Doxygen 1.6.1 --> 
    811<script type="text/javascript"> 
    912<!-- 
     
    6265    </ul> 
    6366  </div> 
    64 <h1>mex_logger.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include "<a class="code" href="loggers_8h.html" title="Loggers for storing results of experiments.">base/loggers.h</a>"</span> 
     67<h1>mex_logger.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#include &quot;<a class="code" href="loggers_8h.html" title="Loggers for storing results of experiments.">base/loggers.h</a>&quot;</span> 
    6568<a name="l00002"></a>00002  
    66 <a name="l00003"></a>00003 <span class="keyword">namespace </span>bdm{ 
    67 <a name="l00004"></a>00004 <span class="keywordtype">int</span> mxReplaceFieldNM(mxArray *X,<span class="keyword">const</span> <span class="keywordtype">char</span> * fname,mxArray *X1) 
    68 <a name="l00005"></a>00005 { 
    69 <a name="l00006"></a>00006         mxArray *Old; 
    70 <a name="l00007"></a>00007         <span class="keywordtype">int</span> i; 
    71 <a name="l00008"></a>00008  
    72 <a name="l00009"></a>00009         <span class="keywordflow">if</span>((i=mxGetFieldNumber(X,fname))==-1) 
    73 <a name="l00010"></a>00010         { 
    74 <a name="l00011"></a>00011                 <span class="keywordflow">if</span>((i=mxAddField(X,fname))==-1) <span class="keywordflow">return</span> i; 
     69<a name="l00003"></a>00003 <span class="keyword">namespace </span>bdm { 
     70<a name="l00004"></a>00004 <span class="keywordtype">int</span> mxReplaceFieldNM ( mxArray *X, <span class="keyword">const</span> <span class="keywordtype">char</span> * fname, mxArray *X1 ) { 
     71<a name="l00005"></a>00005         mxArray *Old; 
     72<a name="l00006"></a>00006         <span class="keywordtype">int</span> i; 
     73<a name="l00007"></a>00007  
     74<a name="l00008"></a>00008         <span class="keywordflow">if</span> ( ( i = mxGetFieldNumber ( X, fname ) ) == -1 ) { 
     75<a name="l00009"></a>00009                 <span class="keywordflow">if</span> ( ( i = mxAddField ( X, fname ) ) == -1 ) <span class="keywordflow">return</span> i; 
     76<a name="l00010"></a>00010  
     77<a name="l00011"></a>00011         } 
    7578<a name="l00012"></a>00012  
    76 <a name="l00013"></a>00013         } 
    77 <a name="l00014"></a>00014  
    78 <a name="l00015"></a>00015         Old=mxGetFieldByNumber(X,0,i); 
    79 <a name="l00016"></a>00016         <span class="keywordflow">if</span>(Old)mxDestroyArray(Old); 
    80 <a name="l00017"></a>00017         mxSetFieldByNumber(X,0,i,X1); 
    81 <a name="l00018"></a>00018         <span class="keywordflow">return</span> i; 
     79<a name="l00013"></a>00013         Old = mxGetFieldByNumber ( X, 0, i ); 
     80<a name="l00014"></a>00014         <span class="keywordflow">if</span> ( Old ) mxDestroyArray ( Old ); 
     81<a name="l00015"></a>00015         mxSetFieldByNumber ( X, 0, i, X1 ); 
     82<a name="l00016"></a>00016         <span class="keywordflow">return</span> i; 
     83<a name="l00017"></a>00017  
     84<a name="l00018"></a>00018 }; 
    8285<a name="l00019"></a>00019  
    83 <a name="l00020"></a>00020 }; 
    84 <a name="l00021"></a>00021  
    85 <a name="l00022"></a>00022 <span class="keywordtype">void</span> Arrayvec2mxArray(<span class="keyword">const</span> Array&lt;vec&gt; &amp;in, mxArray *out) 
    86 <a name="l00023"></a>00023 { 
    87 <a name="l00024"></a>00024   <span class="keywordtype">int</span> rows, cols, r, c; 
     86<a name="l00020"></a>00020 <span class="keywordtype">void</span> Arrayvec2mxArray ( <span class="keyword">const</span> Array&lt;vec&gt; &amp;in, mxArray *out ) { 
     87<a name="l00021"></a>00021         <span class="keywordtype">int</span> rows, cols, r, c; 
     88<a name="l00022"></a>00022  
     89<a name="l00023"></a>00023         <span class="keywordtype">double</span>* temp = ( <span class="keywordtype">double</span> * ) mxGetPr ( out ); 
     90<a name="l00024"></a>00024         <span class="keywordflow">if</span> ( temp == 0 ) mexErrMsgTxt ( <span class="stringliteral">&quot;mat2mxArray: Pointer to data is NULL&quot;</span> ); 
    8891<a name="l00025"></a>00025  
    89 <a name="l00026"></a>00026   <span class="keywordtype">double</span>* temp = (<span class="keywordtype">double</span> *) mxGetPr(out); 
    90 <a name="l00027"></a>00027   <span class="keywordflow">if</span> (temp == 0) mexErrMsgTxt(<span class="stringliteral">"mat2mxArray: Pointer to data is NULL"</span>); 
     92<a name="l00026"></a>00026         cols = in.size(); 
     93<a name="l00027"></a>00027         <span class="keywordflow">if</span> ( cols == 0 ) mexErrMsgTxt ( <span class="stringliteral">&quot;mat2mxArray: Data has zero columns&quot;</span> ); 
    9194<a name="l00028"></a>00028  
    92 <a name="l00029"></a>00029   cols = in.size(); 
    93 <a name="l00030"></a>00030   <span class="keywordflow">if</span> (cols == 0) mexErrMsgTxt(<span class="stringliteral">"mat2mxArray: Data has zero columns"</span>); 
     95<a name="l00029"></a>00029         rows = in ( 0 ).length(); <span class="comment">//length of the first vec</span> 
     96<a name="l00030"></a>00030         <span class="keywordflow">if</span> ( rows == 0 ) mexErrMsgTxt ( <span class="stringliteral">&quot;mat2mxArray: Data has zero rows&quot;</span> ); 
    9497<a name="l00031"></a>00031  
    95 <a name="l00032"></a>00032   rows = in(0).length(); <span class="comment">//length of the first vec</span> 
    96 <a name="l00033"></a>00033   <span class="keywordflow">if</span> (rows == 0) mexErrMsgTxt(<span class="stringliteral">"mat2mxArray: Data has zero rows"</span>); 
    97 <a name="l00034"></a>00034  
    98 <a name="l00035"></a>00035   <span class="keywordflow">for</span> (c = 0; c &lt; cols; c++) { 
    99 <a name="l00036"></a>00036     <span class="keywordflow">for</span> (r = 0; r &lt; rows; r++) { 
    100 <a name="l00037"></a>00037       *temp++ = in(c)(r); 
    101 <a name="l00038"></a>00038     } 
    102 <a name="l00039"></a>00039   } 
    103 <a name="l00040"></a>00040  
    104 <a name="l00041"></a>00041 } 
    105 <a name="l00042"></a>00042 <span class="keyword">class </span>mexlog : <span class="keyword">public</span> memlog { 
    106 <a name="l00043"></a>00043         <span class="keyword">public</span>: 
    107 <a name="l00045"></a>00045         mexlog(): <a class="code" href="classbdm_1_1memlog.html#611dda03b3050de2eaa448a59cee9c27" title="Default constructor.">memlog</a>(0,<span class="stringliteral">""</span>){}; 
    108 <a name="l00047"></a>00047         mxArray* toCell(){ 
    109 <a name="l00048"></a>00048                 mxArray* tmp = mxCreateStructMatrix(1,1,0,NULL); 
    110 <a name="l00049"></a>00049  
    111 <a name="l00050"></a>00050                 <span class="comment">//copied from itsave</span> 
    112 <a name="l00051"></a>00051                 <span class="keywordtype">int</span> i; 
    113 <a name="l00052"></a>00052                 <span class="keywordtype">string</span> vec_name=<span class="stringliteral">""</span>; 
    114 <a name="l00053"></a>00053                 <span class="keywordtype">int</span> istart, iend; 
    115 <a name="l00054"></a>00054                  
    116 <a name="l00055"></a>00055                 mat M; <span class="comment">//temporary matrix</span> 
    117 <a name="l00056"></a>00056                 <span class="keywordflow">for</span> ( i=0; i&lt;<a class="code" href="classbdm_1_1logger.html#c54566a4554089443a20b2a49ed1a61f" title="RVs of all logged variables.">entries</a>.length();i++ ) { 
    118 <a name="l00057"></a>00057                         istart=0; 
    119 <a name="l00058"></a>00058                         <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0; j&lt;<a class="code" href="classbdm_1_1logger.html#c54566a4554089443a20b2a49ed1a61f" title="RVs of all logged variables.">entries</a>(i).length(); j++){ <span class="comment">// same for as in add!!!</span> 
    120 <a name="l00059"></a>00059                                 vec_name = <a class="code" href="classbdm_1_1logger.html#68ca1f05cf3d414ba0f39211977b8d02" title="Names of logged quantities, e.g. names of algorithm variants.">names</a>(i) + <a class="code" href="classbdm_1_1logger.html#c54566a4554089443a20b2a49ed1a61f" title="RVs of all logged variables.">entries</a>(i).name(j); 
    121 <a name="l00060"></a>00060                                 iend=istart+<a class="code" href="classbdm_1_1logger.html#c54566a4554089443a20b2a49ed1a61f" title="RVs of all logged variables.">entries</a>(i).size(j)-1; 
    122 <a name="l00061"></a>00061                                 M=<a class="code" href="classbdm_1_1memlog.html#1fed143162f2de6ef1c1b6557964f24e" title="Storage.">vectors</a>(i).get_cols(istart,iend); 
    123 <a name="l00062"></a>00062                                 istart=iend+1; 
    124 <a name="l00063"></a>00063                                 <span class="comment">// copy the selection to mx</span> 
    125 <a name="l00064"></a>00064                                 mxArray* fld=mxCreateDoubleMatrix(M.rows(), M.cols(), mxREAL); 
    126 <a name="l00065"></a>00065                                 mat2mxArray(M,fld); 
    127 <a name="l00066"></a>00066                                 mxReplaceFieldNM(tmp, vec_name.c_str(), fld); 
    128 <a name="l00067"></a>00067                         } 
    129 <a name="l00068"></a>00068                 } 
    130 <a name="l00069"></a>00069                 <span class="keywordflow">return</span> tmp; 
    131 <a name="l00070"></a>00070         } 
    132 <a name="l00071"></a>00071         <span class="keywordtype">void</span> from_setting (<span class="keyword">const</span> Setting &amp;root){ 
    133 <a name="l00072"></a>00072           <a class="code" href="classbdm_1_1memlog.html#a690ebd91430b5973855c9b4c9cf1b1d" title="Maximum length of vectors stored in memory.">maxlen</a>=root[<span class="stringliteral">"maxlen"</span>]; 
    134 <a name="l00073"></a>00073         } 
    135 <a name="l00074"></a>00074 }; 
    136 <a name="l00075"></a>00075 <a class="code" href="user__info_8h.html#4f9de2f17e844047726487b99def99c6" title="Macro for registration of class into map of user-infos, registered class is scriptable...">UIREGISTER</a>(mexlog); 
     98<a name="l00032"></a>00032         <span class="keywordflow">for</span> ( c = 0; c &lt; cols; c++ ) { 
     99<a name="l00033"></a>00033                 <span class="keywordflow">for</span> ( r = 0; r &lt; rows; r++ ) { 
     100<a name="l00034"></a>00034                         *temp++ = in ( c ) ( r ); 
     101<a name="l00035"></a>00035                 } 
     102<a name="l00036"></a>00036         } 
     103<a name="l00037"></a>00037  
     104<a name="l00038"></a>00038 } 
     105<a name="l00039"></a>00039  
     106<a name="l00041"></a><a class="code" href="classbdm_1_1mexlog.html">00041</a> <span class="keyword">class </span><a class="code" href="classbdm_1_1mexlog.html" title="Logger storing results into an mxArray.">mexlog</a> : <span class="keyword">public</span> <a class="code" href="classbdm_1_1memlog.html">memlog</a> { 
     107<a name="l00042"></a>00042 <span class="keyword">public</span>: 
     108<a name="l00044"></a><a class="code" href="classbdm_1_1mexlog.html#ac458d92bb26518c908521a8c9460a2c1">00044</a>         <a class="code" href="classbdm_1_1mexlog.html#ac458d92bb26518c908521a8c9460a2c1" title="constructor">mexlog</a>() : <a class="code" href="classbdm_1_1memlog.html">memlog</a> ( 0, <span class="stringliteral">&quot;&quot;</span> ) {}; 
     109<a name="l00046"></a>00046         mxArray* toCell() { 
     110<a name="l00047"></a>00047                 mxArray* tmp = mxCreateStructMatrix ( 1, 1, 0, NULL ); 
     111<a name="l00048"></a>00048  
     112<a name="l00049"></a>00049                 <span class="comment">//copied from itsave</span> 
     113<a name="l00050"></a>00050                 <span class="keywordtype">int</span> i; 
     114<a name="l00051"></a>00051                 <span class="keywordtype">string</span> vec_name = <span class="stringliteral">&quot;&quot;</span>; 
     115<a name="l00052"></a>00052                 <span class="keywordtype">int</span> istart, iend; 
     116<a name="l00053"></a>00053  
     117<a name="l00054"></a>00054                 mat M; <span class="comment">//temporary matrix</span> 
     118<a name="l00055"></a>00055                 <span class="keywordflow">for</span> ( i = 0; i &lt; <a class="code" href="classbdm_1_1logger.html#ac54566a4554089443a20b2a49ed1a61f" title="RVs of all logged variables.">entries</a>.length(); i++ ) { 
     119<a name="l00056"></a>00056                         istart = 0; 
     120<a name="l00057"></a>00057                         <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> j = 0; j &lt; <a class="code" href="classbdm_1_1logger.html#ac54566a4554089443a20b2a49ed1a61f" title="RVs of all logged variables.">entries</a> ( i ).length(); j++ ) { <span class="comment">// same for as in add!!!</span> 
     121<a name="l00058"></a>00058                                 vec_name = <a class="code" href="classbdm_1_1logger.html#a68ca1f05cf3d414ba0f39211977b8d02" title="Names of logged quantities, e.g. names of algorithm variants.">names</a> ( i ) + <a class="code" href="classbdm_1_1logger.html#ac54566a4554089443a20b2a49ed1a61f" title="RVs of all logged variables.">entries</a> ( i ).name ( j ); 
     122<a name="l00059"></a>00059                                 iend = istart + <a class="code" href="classbdm_1_1logger.html#ac54566a4554089443a20b2a49ed1a61f" title="RVs of all logged variables.">entries</a> ( i ).size ( j ) - 1; 
     123<a name="l00060"></a>00060                                 M = <a class="code" href="classbdm_1_1memlog.html#a1fed143162f2de6ef1c1b6557964f24e" title="Storage.">vectors</a> ( i ).get_cols ( istart, iend ); 
     124<a name="l00061"></a>00061                                 istart = iend + 1; 
     125<a name="l00062"></a>00062                                 <span class="comment">// copy the selection to mx</span> 
     126<a name="l00063"></a>00063                                 mxArray* fld = mxCreateDoubleMatrix ( M.rows(), M.cols(), mxREAL ); 
     127<a name="l00064"></a>00064                                 mat2mxArray ( M, fld ); 
     128<a name="l00065"></a>00065                                 mxReplaceFieldNM ( tmp, vec_name.c_str(), fld ); 
     129<a name="l00066"></a>00066                         } 
     130<a name="l00067"></a>00067                 } 
     131<a name="l00068"></a>00068                 <span class="keywordflow">return</span> tmp; 
     132<a name="l00069"></a>00069         } 
     133<a name="l00070"></a><a class="code" href="classbdm_1_1mexlog.html#a39c44b30f201091ab3d287fe5741113e">00070</a>         <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1mexlog.html#a39c44b30f201091ab3d287fe5741113e" title="UI for memlog.">from_setting</a> ( <span class="keyword">const</span> Setting &amp;<a class="code" href="classbdm_1_1root.html" title="Root class of BDM objects.">root</a> ) { 
     134<a name="l00071"></a>00071                 <a class="code" href="classbdm_1_1memlog.html#aa690ebd91430b5973855c9b4c9cf1b1d" title="Maximum length of vectors stored in memory.">maxlen</a> = root[<span class="stringliteral">&quot;maxlen&quot;</span>]; 
     135<a name="l00072"></a>00072         } 
     136<a name="l00073"></a>00073 }; 
     137<a name="l00074"></a>00074 <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> ( mexlog ); 
     138<a name="l00075"></a>00075 SHAREDPTR ( mexlog ); 
    137139<a name="l00076"></a>00076 } 
    138140</pre></div></div> 
    139 <hr size="1"><address style="text-align: right;"><small>Generated on Wed Aug 5 00:06:48 2009 for mixpp by&nbsp; 
     141<hr size="1"/><address style="text-align: right;"><small>Generated on Sun Aug 30 22:10:49 2009 for mixpp by&nbsp; 
    140142<a href="http://www.doxygen.org/index.html"> 
    141 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address> 
     143<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address> 
    142144</body> 
    143145</html>