libDS.cpp itpp/itbase.h libDS.h #include<itpp/itbase.h> #include"libDS.h" //usingnamespaceitpp; voidMemDS::getdata(vec&dt){ inti; it_assert_debug(dt.length()==rowid.length(),"MemDS:getdataincompatibledt"); for(i=0;i<rowid.length();i++){ dt(i)=Data(rowid(i),time-delays(i)); } } voidMemDS::getdata(vec&dt,ivec&indeces){ intj,i; it_assert_debug(dt.length()==indeces.length(),"MemDS:getdataincompatibledt"); for(i=0;i<indeces.length();i++){ j=indeces(i); dt(i)=Data(rowid(j),time-delays(j)); } } voidMemDS::step(){ if(time<Data.cols()){time++;} } voidMemDS::linkrvs(RV&drv,RV&urv){ it_assert_debug(drv.count()==rowid.length(),"MemDS::linkrvsincompatibledrv"); it_assert_debug(urv.count()==0,"MemDSdoesnotsupporturv."); Drv=drv; Urv=urv; } MemDS::MemDS(mat&Dat,ivec&rowid,ivec&delays){ it_assert_debug(max(rowid)<=Dat.rows(),"MemDSrowidistoohighforgivenDat."); it_assert_debug(max(delays)<Dat.cols(),"MemDSdelaysaretoohigh."); time=max(delays); Data=Dat; }