root/bdm/stat/libDS.cpp @ 358

Revision 358, 3.8 kB (checked in by smidl, 15 years ago)

compilation fixes for Linux

  • Property svn:eol-style set to native
Line 
1
2#include "libDS.h"
3//#include "..\user_info.h"
4
5using namespace bdm;
6
7void MemDS::getdata ( vec &dt ) {
8        int i;
9
10        it_assert_debug ( dt.length() ==rowid.length(), "MemDS:getdata incompatible dt" );
11        for ( i=0;i<rowid.length();i++ ) {
12                dt ( i ) = Data ( rowid ( i ),time-delays ( i ) );
13        }
14}
15
16void MemDS::getdata ( vec &dt,const ivec &indeces ) {
17        int j,i;
18        it_assert_debug ( dt.length() ==indeces.length(), "MemDS:getdata incompatible dt" );
19        for ( i=0;i<indeces.length();i++ ) {
20                j = indeces ( i );
21                dt ( i ) = Data ( rowid ( j ),time-delays ( j ) );
22        }
23}
24
25void MemDS::step() {
26        if ( time<Data.cols() ) {time++;}
27}
28
29void MemDS::set_rvs ( RV &drv, RV &urv ) {
30        it_assert_debug ( drv._dsize() ==rowid.length(),"MemDS::set_rvs incompatible drv" );
31        it_assert_debug ( urv._dsize() ==0,"MemDS does not support urv." );
32
33        Drv = drv;
34}
35
36MemDS::MemDS ( mat &Dat, ivec &rowid0, ivec &delays0 ) : rowid(rowid0),delays(delays0){
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 );
41        Data = Dat;
42}
43
44void ArxDS::step() {
45        //shift history
46        H.shift_right ( 0, dt_size );
47
48        H.set_subvector ( dt_size-utsize, U ); // write U after Drv
49
50        //get regressor
51        rgr = rgrlnk.pushdown ( H );
52        // Eval Y
53        H.set_subvector ( 0, model.samplecond ( rgr ) );
54
55}
56
57void ArxDS::from_setting( const Setting &root ) 
58{       
59        RV *yrv = UI::build<RV>( root, "y" );
60        RV *urv = UI::build<RV>( root, "u" );
61        RV *rrv = UI::build<RV>( root, "rgr" ); 
62                               
63        mat Th;
64        UI::get( Th, root, "theta" );
65
66        vec mu0;
67        if( root.exists( "offset" ))
68                UI::get( mu0, root, "offset" );
69        else
70                mu0= zeros( yrv->_dsize() );
71
72        mat sqR;
73        UI::get( sqR, root, "r" );
74        set_parameters(Th,mu0,sqR);
75        set_drv(*yrv,*urv,*rrv);
76
77        if(root.exists("opt"))
78                set_options(root["opt"]);
79}
80
81/*void ArxDS::to_setting( Setting &root ) const
82{       
83        Transport::to_setting( root );
84
85        Setting &kilometers_setting = root.add("kilometers", Setting::TypeInt );
86        kilometers_setting = kilometers;
87
88        UI::save( passengers, root, "passengers" );
89}*/
90
91
92CsvFileDS::CsvFileDS ( const string& fname, const string& orientation ) :FileDS() {
93        time = 0;
94               
95        vec data_line;
96        string line;
97
98        ifstream fs;
99        fs.open(fname.c_str());
100        if(fs.is_open()) {
101             while ( getline(fs, line) ) {
102                 data_line.set(line);
103                 Data.append_row(data_line);
104             }
105        }
106       
107        if(orientation == "BY_ROW") {
108             transpose(Data, Data);
109        }
110
111       
112}
113
114//! Auxiliary function building full history of rv0
115RV fullrgr ( const RV &drv0, const RV &urv0, const RV &rrv0 ) {
116        RV T ( urv0 );
117        RV pom = concat ( drv0, urv0 );
118        int mint = rrv0.mint();
119        for ( int i=0; i>mint; i-- ) {
120                pom.t ( -1 );
121                T.add ( pom );
122        }
123        return T;
124}
125
126void ITppFileDS::from_setting( const Setting &root ) 
127{       
128        RV* rvtmp = UI::build<RV>(root, "rv" );
129
130        it_file it ( root["filename"] );
131        it << Name ( root["varname"] ); 
132        it >> Data;
133        time = 0;
134        //rowid and delays are ignored
135
136        set_drv(*rvtmp,RV());
137}
138
139/*void ITppFileDS::to_setting( Setting &root ) const
140{       
141        Transport::to_setting( root );
142
143        Setting &kilometers_setting = root.add("kilometers", Setting::TypeInt );
144        kilometers_setting = kilometers;
145
146        UI::save( passengers, root, "passengers" );
147}*/
148
149void stateDS::from_setting( const Setting &root ) 
150{       
151        IM = UI::build<mpdf>(root, "IM");
152        OM = UI::build<mpdf>(root, "OM");
153
154        dt.set_length( OM->dimension() );
155        xt.set_length( IM->dimension() );
156        ut.set_length(0);
157       
158        RV* rvtmp = UI::build<RV>(root["IM"], "rvu");                   
159        //set_drv(rvtmp);
160}
161
162/*void stateDS::to_setting( Setting &root ) const
163{       
164        Transport::to_setting( root );
165
166        Setting &kilometers_setting = root.add("kilometers", Setting::TypeInt );
167        kilometers_setting = kilometers;
168
169        UI::save( passengers, root, "passengers" );
170}*/
171
Note: See TracBrowser for help on using the browser.