Changeset 124 for bdm/stat/emix.cpp
- Timestamp:
- 06/20/08 11:16:12 (16 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
bdm/stat/emix.cpp
r107 r124 3 3 using namespace itpp; 4 4 5 void emix::set_parameters ( const vec &w0, const Array<epdf*> &Coms0 ) {5 void emix::set_parameters ( const vec &w0, const Array<epdf*> &Coms0 ) { 6 6 w = w0; 7 7 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 } 9 12 Coms = Coms0; 10 13 } 11 14 12 vec emix::sample() const {13 //Sample which component 15 vec emix::sample() const { 16 //Sample which component 14 17 vec cumDist = cumsum ( w ); 15 18 double u0 = UniRNG.sample(); 16 19 17 20 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(); 21 24 }