root/bdm/stat/libDS.cpp @ 313

Revision 313, 2.0 kB (checked in by smidl, 15 years ago)

mexds

  • Property svn:eol-style set to native
Line 
1
2#include "libDS.h"
3using namespace bdm;
4
5void MemDS::getdata ( vec &dt ) {
6        int i;
7
8        it_assert_debug ( dt.length() ==rowid.length(), "MemDS:getdata incompatible dt" );
9        for ( i=0;i<rowid.length();i++ ) {
10                dt ( i ) = Data ( rowid ( i ),time-delays ( i ) );
11        }
12}
13
14void MemDS::getdata ( vec &dt,const ivec &indeces ) {
15        int j,i;
16        it_assert_debug ( dt.length() ==indeces.length(), "MemDS:getdata incompatible dt" );
17        for ( i=0;i<indeces.length();i++ ) {
18                j = indeces ( i );
19                dt ( i ) = Data ( rowid ( j ),time-delays ( j ) );
20        }
21}
22
23void MemDS::step() {
24        if ( time<Data.cols() ) {time++;}
25}
26
27void MemDS::set_rvs ( RV &drv, RV &urv ) {
28        it_assert_debug ( drv._dsize() ==rowid.length(),"MemDS::set_rvs incompatible drv" );
29        it_assert_debug ( urv._dsize() ==0,"MemDS does not support urv." );
30
31        Drv = drv;
32}
33
34MemDS::MemDS ( mat &Dat, ivec &rowid0, ivec &delays0 ) : rowid(rowid0),delays(delays0){
35        it_assert_debug ( max ( rowid ) <=Dat.rows(),"MemDS rowid is too high for given Dat." );
36        it_assert_debug ( max ( delays ) <Dat.cols(),"MemDS delays are too high." );
37
38        time = max ( delays );
39        Data = Dat;
40}
41
42void ArxDS::step() {
43        //shift history
44        H.shift_right ( 0, dt_size );
45
46        H.set_subvector ( dt_size-utsize, U ); // write U after Drv
47
48        //get regressor
49        rgr = rgrlnk.pushdown ( H );
50        // Eval Y
51        H.set_subvector ( 0, model.samplecond ( rgr ) );
52
53}
54
55CsvFileDS::CsvFileDS ( const string& fname, const string& orientation ) :FileDS() {
56        time = 0;
57               
58        vec data_line;
59        string line;
60
61        ifstream fs;
62        fs.open(fname.c_str());
63        if(fs.is_open()) {
64             while ( getline(fs, line) ) {
65                 data_line.set(line);
66                 Data.append_row(data_line);
67             }
68        }
69       
70        if(orientation == "BY_ROW") {
71             transpose(Data, Data);
72        }
73
74       
75}
76
77//! Auxiliary function building full history of rv0
78RV fullrgr ( const RV &drv0, const RV &urv0, const RV &rrv0 ) {
79        RV T ( urv0 );
80        RV pom = concat ( drv0, urv0 );
81        int mint = rrv0.mint();
82        for ( int i=0; i>mint; i-- ) {
83                pom.t ( -1 );
84                T.add ( pom );
85        }
86        return T;
87}
Note: See TracBrowser for help on using the browser.