00001
00013 #ifndef MX_H
00014 #define MX_H
00015
00016 #include "libBM.h"
00017 #include "libEF.h"
00018
00019
00020 using namespace itpp;
00021
00032 class emix : public epdf {
00033 protected:
00035 vec w;
00037 Array<epdf*> Coms;
00038 public:
00040 emix ( RV &rv ): epdf(rv){};
00042 void set_parameters ( const vec &w, const Array<epdf*> &Coms );
00043
00044 vec sample() const;
00045 vec mean() const {
00046 int i; vec mu=zeros ( rv.count() );
00047 for ( i=0;i<w.length();i++ ) {mu+=w ( i ) *Coms ( i )->mean(); }
00048 return mu;
00049 }
00050 double evalpdflog ( const vec &val ) const {int i; double sum=0.0; for ( i=0;i<w.length();i++ ) {sum+=w ( i ) *Coms ( i )->evalpdflog ( val );} return log ( sum );};
00051
00052
00054 vec& _w() {return w;}
00055 };
00056
00057
00058 #endif //MX_H