Show
Ignore:
Timestamp:
05/27/10 13:08:44 (14 years ago)
Author:
smidl
Message:

mixtures do not have n

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/estim/mixtures.h

    r997 r1004  
    4343class MixEF: public BMEF { 
    4444protected: 
    45         //!Number of components 
    46         int n; 
    4745        //! Models for Components of \f$\theta_i\f$ 
    4846        Array<BMEF*> Coms; 
     
    5755                public: 
    5856                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;} 
    6159        } est; 
    6260        ////!indices of component rvc in common rvc 
     
    6866        //! Full constructor 
    6967        MixEF ( const Array<BMEF*> &Coms0, const vec &alpha0 ) : 
    70                         BMEF ( ), n ( Coms0.length() ), Coms ( n ), 
     68                        BMEF ( ), Coms ( Coms0.length() ), 
    7169                        weights (), est(*this), method ( QB ) { 
    72                 for ( int i = 0; i < n; i++ ) { 
     70                for ( int i = 0; i < Coms0.length(); i++ ) { 
    7371                        Coms ( i ) = ( BMEF* ) Coms0 ( i )->_copy(); 
    7472                } 
     
    7977        //! Constructor of empty mixture 
    8078        MixEF () : 
    81                         BMEF ( ), n ( 0 ), Coms ( 0 ), 
     79                        BMEF ( ), Coms ( 0 ), 
    8280                        weights (), est(*this), method ( QB ) { 
    8381        } 
    8482        //! Copy constructor 
    85         MixEF ( const MixEF &M2 ) : BMEF ( ), n ( M2.n ), Coms ( n ), 
     83        MixEF ( const MixEF &M2 ) : BMEF ( ),  Coms ( M2.Coms.length() ), 
    8684                        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++ ) { 
    8886                        Coms ( i ) = (BMEF*) M2.Coms ( i )->_copy(); 
    8987                } 
     
    121119        } 
    122120 
    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         } 
     121void 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*/ 
     128void from_setting (const  Setting &set ) { 
     129        BMEF::from_setting( set ); 
     130        UI::get ( Coms, set, "Coms" ); 
     131        UI::get ( weights, set, "weights" ); 
     132} 
    128133}; 
    129134UIREGISTER ( MixEF );