00001
00013 #ifndef BM_H
00014 #define BM_H
00015
00016 #include <itpp/itbase.h>
00017
00018
00019 using namespace itpp;
00020
00026 class RV {
00027 int len;
00028 ivec ids;
00029 ivec sizes;
00030 ivec times;
00031 ivec obs;
00032 Array<std::string> names;
00033
00034 private:
00035 void init ( ivec in_ids, Array<std::string> in_names, ivec in_sizes, ivec in_times, ivec in_obs );
00036 public:
00038 RV ( ivec in_ids, Array<std::string> in_names, ivec in_sizes, ivec in_times, ivec in_obs );
00040 RV ( ivec ids );
00042 RV ();
00043
00045 friend std::ostream &operator<< ( std::ostream &os, const RV &rv );
00046
00048 int length();
00050 ivec rvfind(RV rv2);
00052 RV rvadd(RV rv2);
00054 RV rvsubt(RV rv2);
00056 RV rvsubselect(ivec ind);
00058 RV operator()(ivec ind);
00060 void t(int delta);
00061 };
00062
00063
00064
00065
00067 class fnc {
00068 RV rv;
00069 };
00070
00072 class BM {
00073 public:
00075 double ll;
00076
00081 virtual void bayes ( const vec &dt, bool evall=true ) = 0;
00083 void bayes ( mat Dt );
00084 };
00085
00087 class epdf {
00088 RV rv;
00089 public:
00091
00093 virtual vec sample (){};
00094 virtual double eval(const vec &val){};
00095 };
00096
00098 class mpdf {
00100 RV rv;
00102 RV rvc;
00103 public:
00104
00106
00108 virtual vec samplecond (vec &cond, double lik){};
00109 virtual void condition (vec &cond){};
00110 };
00111
00112 #endif // BM_H