Changeset 1004 for library/bdm/estim/mixtures.h
- Timestamp:
- 05/27/10 13:08:44 (14 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
library/bdm/estim/mixtures.h
r997 r1004 43 43 class MixEF: public BMEF { 44 44 protected: 45 //!Number of components46 int n;47 45 //! Models for Components of \f$\theta_i\f$ 48 46 Array<BMEF*> Coms; … … 57 55 public: 58 56 eprod_mix(const MixEF &m):mix(m){} 59 const epdf* factor(int i) const {return (i==(mix. n-1)) ? &mix.weights.posterior() : &mix.Coms(i)->posterior();}60 const int no_factors()const {return mix. n+1;}57 const epdf* factor(int i) const {return (i==(mix.Coms.length()-1)) ? &mix.weights.posterior() : &mix.Coms(i)->posterior();} 58 const int no_factors()const {return mix.Coms.length()+1;} 61 59 } est; 62 60 ////!indices of component rvc in common rvc … … 68 66 //! Full constructor 69 67 MixEF ( const Array<BMEF*> &Coms0, const vec &alpha0 ) : 70 BMEF ( ), n ( Coms0.length() ), Coms ( n),68 BMEF ( ), Coms ( Coms0.length() ), 71 69 weights (), est(*this), method ( QB ) { 72 for ( int i = 0; i < n; i++ ) {70 for ( int i = 0; i < Coms0.length(); i++ ) { 73 71 Coms ( i ) = ( BMEF* ) Coms0 ( i )->_copy(); 74 72 } … … 79 77 //! Constructor of empty mixture 80 78 MixEF () : 81 BMEF ( ), n ( 0 ),Coms ( 0 ),79 BMEF ( ), Coms ( 0 ), 82 80 weights (), est(*this), method ( QB ) { 83 81 } 84 82 //! Copy constructor 85 MixEF ( const MixEF &M2 ) : BMEF ( ), n ( M2.n ), Coms ( n),83 MixEF ( const MixEF &M2 ) : BMEF ( ), Coms ( M2.Coms.length() ), 86 84 weights ( M2.weights ), est(*this), method ( M2.method ) { 87 for ( int i = 0; i < n; i++ ) {85 for ( int i = 0; i < M2.Coms.length(); i++ ) { 88 86 Coms ( i ) = (BMEF*) M2.Coms ( i )->_copy(); 89 87 } … … 121 119 } 122 120 123 void to_setting ( Setting &set ) const { 124 BMEF::to_setting( set ); 125 UI::save ( Coms, set, "Coms" ); 126 UI::save ( &weights, set, "weights" ); 127 } 121 void to_setting ( Setting &set ) const { 122 BMEF::to_setting( set ); 123 UI::save ( Coms, set, "Coms" ); 124 UI::save ( &weights, set, "weights" ); 125 } 126 /*! \brief reads data from setting 127 */ 128 void from_setting (const Setting &set ) { 129 BMEF::from_setting( set ); 130 UI::get ( Coms, set, "Coms" ); 131 UI::get ( weights, set, "weights" ); 132 } 128 133 }; 129 134 UIREGISTER ( MixEF );