- Main Page
- Related Pages
- Classes
- Files

# work/mixpp/bdm/stat/emix.h

Go to the documentation of this file.

    00001
    00013 #ifndef MX_H
    00014 #define MX_H
    00015
    00016 #include "libBM.h"
    00017 #include "libEF.h"
    00018 //#include <std>
    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 {
    00051                 int i;
    00052                 double sum=0.0;
    00053                 for ( i=0;i<w.length();i++ ) {sum+=w ( i ) *Coms ( i )->evalpdflog ( val );}
    00054                 return log ( sum );
    00055         };
    00056
    00057 //Access methods
    00059         vec& _w() {return w;}
    00060 };
    00061
    00066 class eprod: public epdf {
    00067 protected:
    00068         Array<epdf*> epdfs;
    00069         Array<mpdf*> mpdfs;
    00070 public:
    00071
    00072
    00073 };
    00074
    00078 class mmix : public mpdf {
    00079 protected:
    00081         Array<mpdf*> Coms;
    00083         emix Epdf;
    00084 public:
    00086         mmix ( RV &rv, RV &rvc ) : mpdf ( rv, rvc ), Epdf ( rv ) {ep=&Epdf;};
    00088         void set_parameters ( const vec &w, const Array<mpdf*> &Coms ) {
    00089                 Array<epdf*> Eps ( Coms.length());
    00090
    00091                 for ( int i=0;i<Coms.length();i++ ) {mpdf* Ci=Coms(i);
    00092                  Eps ( i ) =& ( Coms ( i )->_epdf() );}
    00093                 Epdf.set_parameters ( w,Eps );
    00094         };
    00095
    00096         void condition ( const vec &cond ) {
    00097                 for ( int i=0;i<Coms.length();i++ ) {Coms ( i )->condition ( cond );}
    00098         };
    00099 };
    00100 #endif //MX_H