Changeset 660 for library/bdm/base/bdmbase.h
- Timestamp:
- 10/15/09 00:04:30 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
library/bdm/base/bdmbase.h
r652 r660 238 238 return tmp; 239 239 } 240 //! return rvs with expanded delayes and sorted in the order of: \f$ [ rv_{0}, rv_{-1}, rv_{240 //! return rvs with expanded delayes and sorted in the order of: \f$ [ rv_{0}, rv_{-1},\ldots rv_{max_delay}]\f$ 241 241 RV expand_delayes() const { 242 242 RV rvt = this->remove_time(); //rv at t=0 … … 764 764 class datalink_2to1_buffered { 765 765 protected: 766 //! link 1st vector to down 766 767 datalink_buffered dl1; 768 //! link 2nd vector to down 767 769 datalink_buffered dl2; 768 770 public: … … 772 774 dl2.set_connection ( rv, rv_up2 ); 773 775 } 776 //! fill values of down from the values of the two up vectors 774 777 void filldown ( const vec &val1, const vec &val2, vec &val_down ) { 775 778 bdm_assert_debug ( val_down.length() >= dl1._downsize() + dl2._downsize(), "short val_down" ); … … 777 780 dl2.filldown ( val2, val_down ); 778 781 } 782 //! update buffer 779 783 void step ( const vec &dt, const vec &ut ) { 780 784 dl1.step ( dt ); … … 962 966 //!Description of output data 963 967 RV Yrv; // 964 //! Remember its own index in Logger L 965 i nt L_dt, L_ut;968 //! Remember its own index in Logger L, [0=dt, 1=ut] 969 ivec LIDs; 966 970 public: 967 971 //! default constructors 968 DS() : Drv(), Urv(),Yrv() {};972 DS() : Drv(), Urv(),Yrv(), LIDs(2) {}; 969 973 970 974 //! Returns maximum number of provided data, by default it is set to maximum allowed length, shorter DS should overload this method! See, MemDS.max_length(). … … 980 984 981 985 //! Accepts action variable and schedule it for application. 982 virtual void write ( vec &ut ) {986 virtual void write (const vec &ut ) { 983 987 bdm_error ( "abstract class" ); 984 988 } 985 989 986 990 //! Accepts action variables at specific indeces 987 virtual void write ( vec &ut, const ivec &indeces ) {991 virtual void write (const vec &ut, const ivec &indeces ) { 988 992 bdm_error ( "abstract class" ); 989 993 } … … 1000 1004 bdm_assert ( utsize == Urv._dsize(), "invalid DS: utsize (" + num2str ( utsize ) + ") different from Urv " + num2str ( Urv._dsize() ) ); 1001 1005 1002 L _dt= L.add ( Drv, "" );1003 L _ut= L.add ( Urv, "" );1006 LIDs(0) = L.add ( Drv, "" ); 1007 LIDs(1) = L.add ( Urv, "" ); 1004 1008 } 1005 1009 //! Register DS for logging into logger L … … 1008 1012 getdata ( tmp ); 1009 1013 // d is first in getdata 1010 L.logit ( L _dt, tmp.left ( Drv._dsize() ) );1014 L.logit ( LIDs(0), tmp.left ( Drv._dsize() ) ); 1011 1015 // u follows after d in getdata 1012 L.logit ( L _ut, tmp.mid ( Drv._dsize(), Urv._dsize() ) );1016 L.logit ( LIDs(1), tmp.mid ( Drv._dsize(), Urv._dsize() ) ); 1013 1017 } 1014 1018 //!access function … … 1072 1076 }; 1073 1077 BM ( const BM &B ) : drv ( B.drv ), ll ( B.ll ), evalll ( B.evalll ) {} 1074 //! Copy function required in vectors, Arrays of BM etc. Have to be DELETED manually!1078 //! \brief Copy function required in vectors, Arrays of BM etc. Have to be DELETED manually! 1075 1079 //! Prototype: \code BM* _copy_() const {return new BM(*this);} \endcode 1076 1080 virtual BM* _copy_() const { … … 1138 1142 //! \name Access to attributes 1139 1143 //!@{ 1140 1144 //! access function 1141 1145 const RV& _drv() const { 1142 1146 return drv; 1143 1147 } 1148 //! access function 1144 1149 void set_drv ( const RV &rv ) { 1145 1150 drv = rv; 1146 1151 } 1152 //! access to rv of the posterior 1147 1153 void set_rv ( const RV &rv ) { 1148 1154 const_cast<epdf&> ( posterior() ).set_rv ( rv ); 1149 1155 } 1156 //! return internal log-likelihood of the last data vector 1150 1157 double _ll() const { 1151 1158 return ll; 1152 1159 } 1160 //! switch evaluation of log-likelihood on/off 1153 1161 void set_evalll ( bool evl0 ) { 1154 1162 evalll = evl0; 1155 1163 } 1164 //! return posterior density 1156 1165 virtual const epdf& posterior() const = 0; 1157 1166 //!@} … … 1216 1225 1217 1226 }; 1218 1227 //! array of pointers to epdf 1219 1228 typedef Array<shared_ptr<epdf> > epdf_array; 1220 1229 //! array of pointers to mpdf 1221 1230 typedef Array<shared_ptr<mpdf> > mpdf_array; 1222 1231