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

new test for mxArrayDS (former MexDS)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • 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