Changeset 593

Show
Ignore:
Timestamp:
08/31/09 23:13:25 (15 years ago)
Author:
smidl
Message:

new test for mxArrayDS (former MexDS)

Files:
1 added
6 modified

Legend:

Unmodified
Added
Removed
  • applications/bdmtoolbox/mex/estimator.cpp

    r568 r593  
    5858#ifdef MEX 
    5959#include <itpp/itmex.h> 
     60#include "mex/mex_BM.h" 
    6061#include "mex/mex_logger.h" 
    61 #include "mex/mex_parser.h" 
     62#include "mex/mex_datasource.h" 
    6263 
    6364void mexFunction ( int n_output, mxArray *output[], int n_input, const mxArray *input[] ) { 
     
    110111         
    111112        shared_ptr<logger> L = UI::build<logger>( Cfg, "logger"); 
    112         shared_ptr<ArxDS> DS = UI::build<ArxDS>( Cfg, "system" ); 
     113        shared_ptr<DS> Ds = UI::build<DS>( Cfg, "system" ); 
    113114        Array<shared_ptr<BM> > Es;      UI::get(Es,Cfg, "estimators" ); 
    114115        int Ndat; 
    115116        Cfg.lookupValue ( "experiment.ndat",Ndat ); 
    116117 
    117         DS->log_add ( *L ); 
     118        Ds->log_add ( *L ); 
    118119        string Ename; 
    119120        Setting &S=Cfg; 
     
    127128                Es(i)->log_add(*L,Ename); // estimate 
    128129        } 
    129         L->init(); 
     130                L->init(); 
    130131 
    131         vec dt=zeros ( DS->_drv()._dsize() );   //data variable 
     132        vec dt=zeros ( Ds->_drv()._dsize() );   //data variable 
    132133        Array<datalink*> Dls(Es.length());  
    133134        for (int i=0; i<Es.length(); i++){ 
    134                 Dls(i)=new datalink( Es(i)->_drv(),DS->_drv() ); //datalink between a datasource and estimator 
     135                Dls(i)=new datalink( Es(i)->_drv(),Ds->_drv() ); //datalink between a datasource and estimator 
    135136        } 
    136137         
    137138        for ( int tK=1;tK<Ndat;tK++ ) { 
    138                 DS->step();                                                     // simulator step 
    139                 DS->getdata ( dt );                                     // read data 
    140                 DS->logit ( *L ); 
     139                Ds->step();                                                     // simulator step 
     140                Ds->getdata ( dt );                                     // read data 
     141                Ds->logit ( *L ); 
    141142                 
    142143                for (int i=0; i<Es.length(); i++){ 
  • library/bdm/base/bdmbase.h

    r588 r593  
    812812                        return Urv; 
    813813                } 
    814                 //! set random rvariables 
     814                //! set random variables 
    815815                virtual void set_drv (const  RV &drv, const RV &urv) { 
    816816                        Drv = drv; 
  • library/bdm/mex/config2mxstruct.h

    r536 r593  
     1#ifndef CFGSTR_H 
     2#define CFGSTR_H 
     3 
    14#include "../base/libconfig/libconfig.h++" 
    25#include <itpp/itbase.h> 
     
    154157        } 
    155158}; 
     159 
     160#endif //CFGSTR_H 
  • library/bdm/mex/mex_datasource.h

    r565 r593  
     1#ifndef MXDS_H 
     2#define MXDS_H 
     3 
     4 
    15#include "../bdm/bdmerror.h" 
    2 #include "../bdm/stat/datasources.h" 
     6#include "../bdm/base/datasources.h" 
    37#include "mex_parser.h" 
    48 
     
    1115The data can be loaded from a file. 
    1216*/ 
    13 class MexDS : public MemDS { 
     17class mxArrayDS : public MemDS { 
     18        public: 
    1419        //!Default constructor 
    15         MexDS () {}; 
     20        mxArrayDS ():MemDS() {}; 
    1621 
    1722        /*! \brief Create memory data source from mxArray 
     
    2025        system={ 
    2126                type="mexDS"; 
    22                 varname="";            // name of workspace variable 
    23                 rids=[1 1 1];          // numbers of data rows 
    24                 tds =[0 1 2];          // time delays 
     27                varname="";                // name of workspace variable 
     28                row_rv = {class='RV',...}  // definition of  
    2529                }; 
    2630        \endcode 
     
    2832        MemDS with the above fields will be created; 
    2933 
    30         \todo Very memory inefficient implementation. The data file is copied 2 times! 
    31         For better implementatin we would need MemDS with pointer to the raw data. Then it could operate directly inside mxArray. 
    32  
    3334        */ 
    3435        void from_setting ( const Setting &set ) { 
    3536                Data = mxArray2mat ( mexGetVariable ( "base", set["varname"] ) ); 
    36                 UI::get ( rowid, set, "rids" , UI::compulsory ); 
     37/*              UI::get ( rowid, set, "rids" , UI::compulsory ); 
    3738                bdm_assert_debug ( max ( rowid ) <= Data.rows(), "MemDS rowid is too high for given Dat." ); 
    3839 
     
    4041                time = max ( delays ); 
    4142                bdm_assert_debug ( time < Data.cols(), "MemDS delays are too high." ); 
    42  
    43                 shared_ptr<RV> r = UI::build<RV> ( set, "rv", UI::compulsory ); 
     43*/ 
     44                //set MemDS 
     45                rowid = linspace(0,Data.rows()-1); 
     46                delays = zeros_i(Data.rows()); 
     47                dtsize=rowid.length(); 
     48                utsize=0; 
     49                 
     50                shared_ptr<RV> r = UI::build<RV> ( set, "rv", UI::optional ); 
    4451                RV ru = RV(); 
    45                 set_rvs ( *r, ru ); 
     52                if (r){ 
     53                        set_rvs ( *r, ru ); 
     54                } else { 
     55                        RV def((const char*)set["varname"],Data.rows()); 
     56                        set_rvs(def, ru); 
     57                } 
    4658        } 
    4759 
     
    5062}; 
    5163 
    52 UIREGISTER ( MexDS ); 
    53 SHAREDPTR ( MexDS ); 
     64UIREGISTER ( mxArrayDS ); 
     65SHAREDPTR ( mxArrayDS ); 
    5466 
    5567} 
     68#endif //MXDS_H 
  • library/bdm/mex/mex_logger.h

    r536 r593  
     1#ifndef MXLOG_H 
     2#define MXLOG_H 
     3 
    14#include "base/loggers.h" 
    25 
     
    3336                for ( r = 0; r < rows; r++ ) { 
    3437                        *temp++ = in ( c ) ( r ); 
     38                         
    3539                } 
    3640        } 
     
    7579SHAREDPTR ( mexlog ); 
    7680} 
     81 
     82#endif //MXLOG_H 
  • library/bdm/mex/mex_parser.h

    r588 r593  
     1#ifndef MXPARSE_H 
     2#define MXPARSE_H 
     3 
     4 
    15#include "../base/libconfig/libconfig.h++" 
    26#include <itpp/itbase.h> 
    37#include <itpp/itmex.h> 
    48#include <stdlib.h> 
     9 
    510 
    611using namespace itpp; 
     
    127132        } 
    128133}; 
     134 
     135#endif //MXPARSE_H