Changeset 183

Show
Ignore:
Timestamp:
10/17/08 10:28:16 (16 years ago)
Author:
smidl
Message:

Universal merging tool is (almost) finished

Files:
8 modified

Legend:

Unmodified
Added
Removed
  • bdm/estim/merger.cpp

    r182 r183  
    108108                                        for ( int k= 0; k<Ns; k++ ) { 
    109109                                                smpk=Smp( k ); 
    110                                                 tmp_cond->condition ( get_vec ( smpk,zinrvc ) ); 
    111                                                 lw_src ( k ) += tmp_cond->_epdf().evalpdflog ( get_vec ( smpk,zinrv ) ); 
     110                                                lw_src ( k ) += log( tmp_cond->evalcond ( get_vec ( smpk,zinrv ), get_vec ( smpk,zinrvc ) )); 
    112111                                        } 
    113112                                        delete tmp_cond; 
     
    152151                // ==== stopping rule === 
    153152                niter++; 
    154                 converged = ( niter>20); 
     153                converged = ( niter>6); 
    155154        } 
    156155 
  • bdm/math/chmat.h

    r168 r183  
    6363                Ch=chol ( M ); 
    6464        }; 
     65        //! Constructor 
     66        chmat ( const chmat &M, const ivec &perm ):sqmat(M.rows()){it_error("not implemneted");}; 
    6567        //! Access function 
    6668        mat & _Ch() {return Ch;} 
  • bdm/math/libDC.h

    r180 r183  
    131131                //! Constructor 
    132132                fsqmat ( const mat &M ); 
     133                //! Constructor 
     134                fsqmat ( const fsqmat &M, const ivec &perm ):sqmat(M.rows()){it_error("not implemneted");}; 
    133135                //! Constructor 
    134136                fsqmat ( const vec &d ):sqmat(d.length()){M=diag(d);}; 
  • bdm/stat/emix.cpp

    r182 r183  
    3535        for(int i=0;i<Coms.length();i++){Cn(i)=Coms(i)->marginal(rv);} 
    3636        emix* tmp = new emix(rv); 
    37         tmp->set_parameters(w,Coms,false); 
     37        tmp->set_parameters(w,Cn,false); 
    3838        tmp->ownComs(); 
    3939        return tmp; 
  • bdm/stat/emix.h

    r182 r183  
    5757                        den = nom->marginal(rvc); 
    5858                }; 
    59                 double evalcond(const vec &val, const vec &cond) const { 
     59                double evalcond(const vec &val, const vec &cond) { 
    6060                        return exp(nom->evalpdflog(concat(val,cond)) - den->evalpdflog(cond)); 
    6161                } 
     
    100100                int i; 
    101101                double sum = 0.0; 
    102                 for ( i = 0;i < w.length();i++ ) {sum += w ( i ) * Coms ( i )->evalpdflog ( val );} 
     102                for ( i = 0;i < w.length();i++ ) {sum += w ( i ) * exp(Coms ( i )->evalpdflog ( val ));} 
    103103                return log ( sum ); 
    104104        }; 
  • bdm/stat/libBM.h

    r182 r183  
    182182        } 
    183183        //! Return conditional density on the given RV, the remaining rvs will be in conditioning 
    184         virtual mpdf* condition(const RV &rv) const {it_warning("Not implemented"); return NULL;} 
     184        virtual mpdf* condition(const RV &rv) const  {it_warning("Not implemented"); return NULL;} 
    185185        //! Return marginal density on the given RV, the remainig rvs are intergrated out 
    186         epdf* marginal(const RV &rv) const {it_warning("Not implemented"); return NULL;} 
     186        virtual epdf* marginal(const RV &rv) const {it_warning("Not implemented"); return NULL;} 
    187187 
    188188        //! return expected value 
  • bdm/stat/libEF.h

    r182 r183  
    130130        double lognc () const; 
    131131        vec mean() const {return mu;} 
    132         mlnorm<sq_T>* condition ( const RV &rvn ) const ; 
    133         enorm<sq_T>* marginal ( const RV &rv ) const; 
     132//      mlnorm<sq_T>* condition ( const RV &rvn ) const ; 
     133        mpdf* condition ( const RV &rvn ) const ; 
     134//      enorm<sq_T>* marginal ( const RV &rv ) const; 
     135        epdf* marginal ( const RV &rv ) const; 
    134136//Access methods 
    135137        //! returns a pointer to the internal mean value. Use with Care! 
     
    597599 
    598600template<class sq_T> 
    599 enorm<sq_T>* enorm<sq_T>::marginal ( const RV &rvn ) const { 
     601epdf* enorm<sq_T>::marginal ( const RV &rvn ) const { 
    600602        ivec irvn = rvn.dataind ( rv ); 
    601603 
     
    607609 
    608610template<class sq_T> 
    609 mlnorm<sq_T>* enorm<sq_T>::condition ( const RV &rvn ) const { 
     611mpdf* enorm<sq_T>::condition ( const RV &rvn ) const { 
    610612 
    611613        RV rvc = rv.subt ( rvn ); 
  • tests/enorm_test.cpp

    r182 r183  
    5252        cout << "original empirical variance: " <<Er <<endl; 
    5353 
    54         enorm<ldmat>* Mg = E.marginal ( y ); 
    55         mlnorm<ldmat>* Cn = E.condition ( x ); 
     54        epdf* Mg = E.marginal ( y ); 
     55        mpdf* Cn = E.condition ( x ); 
    5656 
    5757