Changeset 593
- Timestamp:
- 08/31/09 23:13:25 (16 years ago)
- Files:
-
- 1 added
- 6 modified
Legend:
- Unmodified
- Added
- Removed
-
applications/bdmtoolbox/mex/estimator.cpp
r568 r593 58 58 #ifdef MEX 59 59 #include <itpp/itmex.h> 60 #include "mex/mex_BM.h" 60 61 #include "mex/mex_logger.h" 61 #include "mex/mex_ parser.h"62 #include "mex/mex_datasource.h" 62 63 63 64 void mexFunction ( int n_output, mxArray *output[], int n_input, const mxArray *input[] ) { … … 110 111 111 112 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" ); 113 114 Array<shared_ptr<BM> > Es; UI::get(Es,Cfg, "estimators" ); 114 115 int Ndat; 115 116 Cfg.lookupValue ( "experiment.ndat",Ndat ); 116 117 117 D S->log_add ( *L );118 Ds->log_add ( *L ); 118 119 string Ename; 119 120 Setting &S=Cfg; … … 127 128 Es(i)->log_add(*L,Ename); // estimate 128 129 } 129 L->init();130 L->init(); 130 131 131 vec dt=zeros ( D S->_drv()._dsize() ); //data variable132 vec dt=zeros ( Ds->_drv()._dsize() ); //data variable 132 133 Array<datalink*> Dls(Es.length()); 133 134 for (int i=0; i<Es.length(); i++){ 134 Dls(i)=new datalink( Es(i)->_drv(),D S->_drv() ); //datalink between a datasource and estimator135 Dls(i)=new datalink( Es(i)->_drv(),Ds->_drv() ); //datalink between a datasource and estimator 135 136 } 136 137 137 138 for ( int tK=1;tK<Ndat;tK++ ) { 138 D S->step(); // simulator step139 D S->getdata ( dt ); // read data140 D S->logit ( *L );139 Ds->step(); // simulator step 140 Ds->getdata ( dt ); // read data 141 Ds->logit ( *L ); 141 142 142 143 for (int i=0; i<Es.length(); i++){ -
library/bdm/base/bdmbase.h
r588 r593 812 812 return Urv; 813 813 } 814 //! set random rvariables814 //! set random variables 815 815 virtual void set_drv (const RV &drv, const RV &urv) { 816 816 Drv = drv; -
library/bdm/mex/config2mxstruct.h
r536 r593 1 #ifndef CFGSTR_H 2 #define CFGSTR_H 3 1 4 #include "../base/libconfig/libconfig.h++" 2 5 #include <itpp/itbase.h> … … 154 157 } 155 158 }; 159 160 #endif //CFGSTR_H -
library/bdm/mex/mex_datasource.h
r565 r593 1 #ifndef MXDS_H 2 #define MXDS_H 3 4 1 5 #include "../bdm/bdmerror.h" 2 #include "../bdm/ stat/datasources.h"6 #include "../bdm/base/datasources.h" 3 7 #include "mex_parser.h" 4 8 … … 11 15 The data can be loaded from a file. 12 16 */ 13 class MexDS : public MemDS { 17 class mxArrayDS : public MemDS { 18 public: 14 19 //!Default constructor 15 MexDS() {};20 mxArrayDS ():MemDS() {}; 16 21 17 22 /*! \brief Create memory data source from mxArray … … 20 25 system={ 21 26 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 25 29 }; 26 30 \endcode … … 28 32 MemDS with the above fields will be created; 29 33 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 33 34 */ 34 35 void from_setting ( const Setting &set ) { 35 36 Data = mxArray2mat ( mexGetVariable ( "base", set["varname"] ) ); 36 UI::get ( rowid, set, "rids" , UI::compulsory );37 /* UI::get ( rowid, set, "rids" , UI::compulsory ); 37 38 bdm_assert_debug ( max ( rowid ) <= Data.rows(), "MemDS rowid is too high for given Dat." ); 38 39 … … 40 41 time = max ( delays ); 41 42 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 ); 44 51 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 } 46 58 } 47 59 … … 50 62 }; 51 63 52 UIREGISTER ( MexDS );53 SHAREDPTR ( MexDS );64 UIREGISTER ( mxArrayDS ); 65 SHAREDPTR ( mxArrayDS ); 54 66 55 67 } 68 #endif //MXDS_H -
library/bdm/mex/mex_logger.h
r536 r593 1 #ifndef MXLOG_H 2 #define MXLOG_H 3 1 4 #include "base/loggers.h" 2 5 … … 33 36 for ( r = 0; r < rows; r++ ) { 34 37 *temp++ = in ( c ) ( r ); 38 35 39 } 36 40 } … … 75 79 SHAREDPTR ( mexlog ); 76 80 } 81 82 #endif //MXLOG_H -
library/bdm/mex/mex_parser.h
r588 r593 1 #ifndef MXPARSE_H 2 #define MXPARSE_H 3 4 1 5 #include "../base/libconfig/libconfig.h++" 2 6 #include <itpp/itbase.h> 3 7 #include <itpp/itmex.h> 4 8 #include <stdlib.h> 9 5 10 6 11 using namespace itpp; … … 127 132 } 128 133 }; 134 135 #endif //MXPARSE_H