Changeset 124 for bdm/stat

Show
Ignore:
Timestamp:
06/20/08 11:16:12 (16 years ago)
Author:
smidl
Message:

zmeny v mmix

Location:
bdm/stat
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • bdm/stat/emix.cpp

    r107 r124  
    33using namespace itpp; 
    44 
    5 void emix::set_parameters ( const vec &w0, const Array<epdf*> &Coms0 ){ 
     5void emix::set_parameters ( const vec &w0, const Array<epdf*> &Coms0 ) { 
    66        w = w0; 
    77        int i; 
    8         for(i=0;i<w.length();i++){it_assert_debug(rv.equal(Coms0(i)->_rv()),"RVs do not match!"); } 
     8        for ( i=0;i<w.length();i++ ) { 
     9                epdf* Mp=Coms0 ( i ); 
     10                it_assert_debug ( rv.equal ( Coms0 ( i )->_rv() ),"RVs do not match!" ); 
     11        } 
    912        Coms = Coms0; 
    1013} 
    1114 
    12 vec emix::sample() const{ 
    13         //Sample which component  
     15vec emix::sample() const { 
     16        //Sample which component 
    1417        vec cumDist = cumsum ( w ); 
    1518        double u0 = UniRNG.sample(); 
    1619 
    1720        int i=0; 
    18         while ((w(i)<u0) && (i<(w.length()-1))){i++;} 
    19          
    20         return Coms(i)->sample(); 
     21        while ( ( w ( i ) <u0 ) && ( i< ( w.length()-1 ) ) ) {i++;} 
     22 
     23        return Coms ( i )->sample(); 
    2124} 
  • bdm/stat/emix.h

    r115 r124  
    6969        Array<mpdf*> mpdfs; 
    7070public: 
    71          
    72          
     71 
     72 
    7373}; 
    7474 
     75/*! \brief Mixture of mpdfs with constant weights 
     76 
     77*/ 
     78class mmix : public mpdf { 
     79protected: 
     80        //! Component (epdfs) 
     81        Array<mpdf*> Coms; 
     82        //!Internal epdf 
     83        emix Epdf; 
     84public: 
     85        //!Default constructor 
     86        mmix ( RV &rv, RV &rvc ) : mpdf ( rv, rvc ), Epdf ( rv ) {ep=&Epdf;}; 
     87        //! Set weights \c w and components \c R 
     88        void set_parameters ( const vec &w, const Array<mpdf*> &Coms ) { 
     89                Array<epdf*> Eps ( Coms.length()); 
     90 
     91                for ( int i=0;i<Coms.length();i++ ) {mpdf* Ci=Coms(i); 
     92                 Eps ( i ) =& ( Coms ( i )->_epdf() );} 
     93                Epdf.set_parameters ( w,Eps ); 
     94        }; 
     95 
     96        void condition ( const vec &cond ) { 
     97                for ( int i=0;i<Coms.length();i++ ) {Coms ( i )->condition ( cond );} 
     98        }; 
     99}; 
    75100#endif //MX_H 
  • bdm/stat/libEF.h

    r102 r124  
    412412 
    413413template<class sq_T> 
    414 mlnorm<sq_T>::mlnorm ( RV &rv0,RV &rvc0 ) :mEF ( rv0,rvc0 ),epdf ( rv ),A ( rv0.count(),rv0.count() ),_mu(epdf._mu()) { 
     414mlnorm<sq_T>::mlnorm ( RV &rv0,RV &rvc0 ) :mEF ( rv0,rvc0 ),epdf ( rv0 ),A ( rv0.count(),rv0.count() ),_mu(epdf._mu()) { ep =&epdf; 
    415415} 
    416416