Show
Ignore:
Timestamp:
09/04/09 00:45:40 (15 years ago)
Author:
smidl
Message:

datasources revisited...

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/base/datasources.h

    r598 r603  
    103103                shared_ptr<mpdf> impdf; 
    104104                //! internal storage of data sample 
    105                 vec dt; 
     105                vec yt; 
    106106                //! input vector 
    107107                vec ut; 
    108                 //! datalink between dt and ut and regressor 
    109                 datalink_2to1_buffered rgrlink; 
     108                //! datalink between ut and regressor 
     109                datalink_buffered ut2rgr; 
     110                //! datalink between yt and regressor 
     111                datalink_buffered yt2rgr; 
    110112                //! numeric values of regressor 
    111113                vec rgr; 
     
    113115        public: 
    114116                void step() { 
    115                         rgrlink.filldown ( dt,ut,rgr ); 
    116                         rgrlink.step(dt,ut);//whist history 
    117                         dt=impdf->samplecond ( rgr ); 
     117                        yt2rgr.step(yt); // y is now history 
     118                        ut2rgr.filldown ( ut,rgr ); 
     119                        yt2rgr.filldown ( yt,rgr ); 
     120                        yt=impdf->samplecond ( rgr ); 
     121                        ut2rgr.step(ut); //u is now history 
    118122                } 
    119123                void getdata ( vec &dt_out ) { 
    120                         dt_out = dt; 
    121                 } 
    122                 void getdata ( vec &dt_out, const ivec &ids ) { 
    123                         dt_out = dt ( ids ); 
    124                 } 
    125                 const RV& _drv() const { 
    126                         return impdf->_rv(); 
     124                        bdm_assert_debug(dt_out.length()>=utsize+ytsize,"Short output vector"); 
     125                        dt_out.set_subvector(0, yt); 
     126                        dt_out.set_subvector(ytsize, ut); 
    127127                } 
    128128                void write(const vec &ut0){ut=ut0;} 
     
    131131                \code 
    132132                class = "MpdfDS"; 
    133                 mpdf = {class="epdf_offspring", ...}// list of points 
     133                mpdf = {class="mpdf_offspring", ...}// mpdf to simulate 
    134134                \endcode 
    135135 
     
    138138                        impdf=UI::build<mpdf> ( set,"mpdf",UI::compulsory ); 
    139139                         
     140                        Yrv = impdf->_rv(); 
    140141                        // get unique rvs form rvc 
    141142                        RV rgrv0=impdf->_rvc().remove_time(); 
    142                         // input is what in not in _rv() 
    143                         RV urv=rgrv0.subt(impdf->_rv());  
    144                         set_drv(impdf->_rv(), urv); 
     143                        // input is what in not in Yrv 
     144                        Urv=rgrv0.subt(Yrv);  
     145                        set_drv(Yrv, Urv); 
    145146                        // connect input and output to rvc 
    146                         rgrlink.set_connection(impdf->_rvc(), Drv,Urv);  
    147  
    148                         dt = zeros ( impdf->dimension() ); 
     147                        ut2rgr.set_connection(impdf->_rvc(), Urv);  
     148                        yt2rgr.set_connection(impdf->_rvc(), Yrv);  
     149 
     150                        yt = zeros ( impdf->dimension() ); 
    149151                        rgr = zeros ( impdf->dimensionc() ); 
    150                         ut = zeros(urv._dsize()); 
     152                        ut = zeros(Urv._dsize()); 
     153 
     154                        ytsize=yt.length(); 
     155                        utsize=ut.length(); 
     156                        dtsize = ytsize+utsize; 
    151157                } 
    152158};