Changeset 263 for bdm/stat/libDS.cpp

Show
Ignore:
Timestamp:
02/09/09 23:11:35 (15 years ago)
Author:
smidl
Message:

UIArxDS test

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • bdm/stat/libDS.cpp

    r254 r263  
    1 #include <itpp/itbase.h> 
     1 
    22#include "libDS.h" 
    33 
    44using namespace bdm; 
    55 
    6 void MemDS::getdata(vec &dt){ 
     6void MemDS::getdata ( vec &dt ) { 
    77        int i; 
    8          
    9         it_assert_debug(dt.length()==rowid.length(), "MemDS:getdata incompatible dt"); 
    10         for(i=0;i<rowid.length();i++){ 
    11                 dt(i) = Data(rowid(i),time-delays(i)); 
     8 
     9        it_assert_debug ( dt.length() ==rowid.length(), "MemDS:getdata incompatible dt" ); 
     10        for ( i=0;i<rowid.length();i++ ) { 
     11                dt ( i ) = Data ( rowid ( i ),time-delays ( i ) ); 
    1212        } 
    1313} 
    1414 
    15 void MemDS::getdata(vec &dt,ivec &indeces){ 
     15void MemDS::getdata ( vec &dt,const ivec &indeces ) { 
    1616        int j,i; 
    17         it_assert_debug(dt.length()==indeces.length(), "MemDS:getdata incompatible dt"); 
    18         for(i=0;i<indeces.length();i++){ 
    19                 j = indeces (i); 
    20                 dt(i) = Data(rowid(j),time-delays(j)); 
     17        it_assert_debug ( dt.length() ==indeces.length(), "MemDS:getdata incompatible dt" ); 
     18        for ( i=0;i<indeces.length();i++ ) { 
     19                j = indeces ( i ); 
     20                dt ( i ) = Data ( rowid ( j ),time-delays ( j ) ); 
    2121        } 
    2222} 
    2323 
    2424void MemDS::step() { 
    25         if (time<Data.cols()) {time++;} 
     25        if ( time<Data.cols() ) {time++;} 
    2626} 
    2727 
    28 void MemDS::linkrvs(RV &drv, RV &urv) { 
    29         it_assert_debug(drv.count()==rowid.length(),"MemDS::linkrvs incompatible drv"); 
    30         it_assert_debug(urv.count()==0,"MemDS does not support urv."); 
    31          
     28void MemDS::linkrvs ( RV &drv, RV &urv ) { 
     29        it_assert_debug ( drv.count() ==rowid.length(),"MemDS::linkrvs incompatible drv" ); 
     30        it_assert_debug ( urv.count() ==0,"MemDS does not support urv." ); 
     31 
    3232        Drv = drv; 
    3333        Urv = urv; 
    3434} 
    3535 
    36 MemDS::MemDS(mat &Dat, ivec &rowid, ivec &delays){ 
    37         it_assert_debug(max(rowid)<=Dat.rows(),"MemDS rowid is too high for given Dat."); 
    38         it_assert_debug(max(delays)<Dat.cols(),"MemDS delays are too high."); 
    39          
    40         time = max(delays);  
     36MemDS::MemDS ( mat &Dat, ivec &rowid, ivec &delays ) { 
     37        it_assert_debug ( max ( rowid ) <=Dat.rows(),"MemDS rowid is too high for given Dat." ); 
     38        it_assert_debug ( max ( delays ) <Dat.cols(),"MemDS delays are too high." ); 
     39 
     40        time = max ( delays ); 
    4141        Data = Dat; 
    4242} 
     43 
     44void ArxDS::step() { 
     45        double tmp; 
     46        //get regressor 
     47        rgr = rgrlnk.get_val ( H ); 
     48        // Eval Y 
     49        Y = model.samplecond ( rgr,tmp ); 
     50 
     51        //shift history 
     52        H.shift_right ( 0, Drv.count() +Urv.count() ); 
     53        //fill new data 
     54        H.set_subvector ( Drv.count(),Y ); 
     55 
     56        //Leaving U.length() empty slots - these will be filled by write() 
     57} 
     58 
     59//! Auxiliary function building full history of rv0 
     60RV fullrgr ( const RV &drv0, const RV &urv0, const RV &rrv0 ) { 
     61        RV T ( urv0 ); 
     62        RV pom = concat(drv0, urv0); 
     63        int mint = rrv0.mint(); 
     64        for ( int i=0; i>mint; i-- ) { 
     65                pom.t ( -1 ); 
     66                T.add ( pom ); 
     67        } 
     68        return T; 
     69} 
     70 
     71ArxDS::ArxDS ( RV &drv, RV &urv, RV &rrv ) :  
     72                DS(drv,urv), Rrv(rrv), Hrv( fullrgr ( drv,urv,rrv )), //RVs 
     73                Y(drv.count()), H(Hrv.count()) ,rgr ( rrv.count() ),  //tmp variables 
     74                rgrlnk (Hrv ,rrv ) ,model ( drv,rrv ) { 
     75}