00001
00013 #ifndef DS_H
00014 #define DS_H
00015
00016
00017 #include "libBM.h"
00018 #include "libEF.h"
00019
00020
00021 namespace bdm {
00029 class MemDS : public DS {
00031 mat Data;
00033 int time;
00035 ivec rowid;
00037 ivec delays;
00038
00039 public:
00040 void getdata ( vec &dt );
00041 void getdata ( vec &dt, const ivec &indeces );
00042 void linkrvs ( RV &drv, RV &urv );
00043 void write ( vec &ut ) {it_error ( "MemDS::write is not supported" );}
00044 void write ( vec &ut,ivec &indexes ) {it_error ( "MemDS::write is not supported" );}
00045 void step();
00047 MemDS ( mat &Dat, ivec &rowid, ivec &delays );
00048 };
00049
00054 class ArxDS : public DS {
00056 RV Rrv;
00058 vec Y;
00060 vec H;
00062 vec rgr;
00064 datalink_e2e rgrlnk;
00066 mlnorm<chmat> model;
00067 public:
00068 void getdata ( vec &dt ){it_assert_debug(dt.length()==Y.length(),"ArxDS"); dt=Y;};
00069 void getdata ( vec &dt, const ivec &indexes ){it_assert_debug(dt.length()==Y.length(),"ArxDS"); dt=Y;};
00070 void write ( vec &ut ){it_assert_debug(ut.length()==Urv.count(),"ArxDS"); H.set_subvector(0,ut);};
00071 void write ( vec &ut, const ivec &indexes ){it_assert_debug(ut.length()==Urv.count(),"ArxDS"); set_subvector(H,indexes,ut);};
00072 void step();
00074 ArxDS ( RV &drv, RV &urv, RV &rrv);
00076 void set_parameters(const mat &Th0, const vec mu0, const chmat &sqR0)
00077 {model.set_parameters(Th0, mu0, sqR0); };
00078 };
00079
00080 };
00081
00082 #endif // DS_H