- Main Page
- Related Pages
- Classes
- Files

# work/git/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 {
    00034         protected:
    00036                 vec w;
    00038                 Array<epdf*> Coms;
    00039         public:
    00041                 emix ( RV &rv ) : epdf ( rv ) {};
    00043                 void set_parameters ( const vec &w, const Array<epdf*> &Coms );
    00044
    00045                 vec sample() const;
    00046                 vec mean() const
    00047                 {
    00048                         int i; vec mu=zeros ( rv.count() );
    00049                         for ( i=0;i<w.length();i++ ) {mu+=w ( i ) *Coms ( i )->mean(); }
    00050                         return mu;
    00051                 }
    00052                 double evalpdflog ( const vec &val ) const
    00053                 {
    00054                         int i;
    00055                         double sum=0.0;
    00056                         for ( i=0;i<w.length();i++ ) {sum+=w ( i ) *Coms ( i )->evalpdflog ( val );}
    00057                         return log ( sum );
    00058                 };
    00059
    00060 //Access methods
    00062                 vec& _w() {return w;}
    00063 };
    00064
    00073 class eprod: public epdf
    00074 {
    00075         protected:
    00076                 Array<epdf*> epdfs;
    00077                 Array<mpdf*> mpdfs;
    00078                 ivec sizes;
    00079         public:
    00080                 eprod(Array<epdf> Facs){
    00081                         for
    00082                 };
    00083
    00084 };
    00085
    00089 class mmix : public mpdf
    00090 {
    00091         protected:
    00093                 Array<mpdf*> Coms;
    00095                 emix Epdf;
    00096         public:
    00098                 mmix ( RV &rv, RV &rvc ) : mpdf ( rv, rvc ), Epdf ( rv ) {ep=&Epdf;};
    00100                 void set_parameters ( const vec &w, const Array<mpdf*> &Coms )
    00101                 {
    00102                         Array<epdf*> Eps ( Coms.length() );
    00103
    00104                         for ( int i=0;i<Coms.length();i++ )
    00105                         {
    00106                                 Eps ( i ) =& ( Coms ( i )->_epdf() );
    00107                         }
    00108                         Epdf.set_parameters ( w,Eps );
    00109                 };
    00110
    00111                 void condition ( const vec &cond )
    00112                 {
    00113                         for ( int i=0;i<Coms.length();i++ ) {Coms ( i )->condition ( cond );}
    00114                 };
    00115 };
    00116 #endif //MX_H