Changeset 900 for library/bdm

Show
Ignore:
Timestamp:
04/11/10 22:05:11 (14 years ago)
Author:
smidl
Message:

particle bug fixing

Location:
library/bdm
Files:
4 modified

Legend:

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

    r887 r900  
    5050        public: 
    5151                MarginalizedParticle():est(*this){}; 
     52                MarginalizedParticle(const MarginalizedParticle &m2):est(*this){ 
     53                        bm = m2.bm->_copy(); 
     54                        est_emp = m2.est_emp; 
     55                        par = m2.par; 
     56                        validate(); 
     57                }; 
    5258                BM* _copy() const{return new MarginalizedParticle(*this);}; 
    5359                void bayes(const vec &dt, const vec &cond){ 
     
    9399                } 
    94100                void validate(){ 
    95                         yrv = bm->_rv(); 
    96                         dimy = bm->dimension(); 
    97                         set_rv( par->_rv()); 
    98                         set_dim( par->dimension()); 
    99  
    100                         rvc = par->_rvc().subt(par->_rv().copy_t(-1)); 
    101                         rvc.add(bm->_rvc()); // 
     101                        est_emp.set_point(zeros(par->dimension())); 
     102                        est.validate(); 
     103                         
     104                        yrv = bm->_yrv(); 
     105                        dimy = bm->dimensiony(); 
     106                        set_rv( concat(bm->_rv(), par->_rv())); 
     107                        set_dim( par->dimension()+bm->dimension()); 
     108 
     109                        rvc = par->_rvc(); 
     110                        rvc.add(bm->_rvc()); 
     111                        rvc=rvc.subt(par->_rv()); 
     112                        rvc=rvc.subt(par->_rv().copy_t(-1)); 
     113                        rvc=rvc.subt(bm->_rv().copy_t(-1)); // 
    102114                         
    103115                        cond2bm=new datalink_part; 
     
    107119                        cond2bm->set_connection(bm->_rvc(), rvc); 
    108120                        cond2par->set_connection(par->_rvc(), rvc); 
    109                         emp2bm->set_connection(bm->_rvc(), _rv()); 
    110                         emp2par->set_connection(par->_rvc(), _rv().copy_t(-1)); 
     121                        emp2bm->set_connection(bm->_rvc(), par->_rv()); 
     122                        emp2par->set_connection(par->_rvc(), par->_rv().copy_t(-1)); 
    111123                         
    112124                        dimc = rvc._dsize(); 
  • library/bdm/mex/mex_logger.h

    r895 r900  
    6262                        istart = 0; 
    6363                        for ( int j = 0; j < entries ( i ).length(); j++ ) { // same for as in add!!! 
    64                                 vec_name = names ( i ) + "_" + entries ( i ).name ( j ); 
     64                                vec_name = names ( i ) + separator + entries ( i ).name ( j ); 
    6565                                iend = istart + entries ( i ).size ( j ) - 1; 
    6666                                M = vectors ( i ).get_cols ( istart, iend ); 
  • library/bdm/stat/emix.cpp

    r886 r900  
    244244        vec tmp ( dim ); //second moment 
    245245        for ( int i = 0; i < no_factors(); i++ ) { 
    246                 vec pom = factor ( i )->mean(); 
     246                vec pom = factor ( i )->variance(); 
    247247                dls ( i )->pushup ( tmp, pow ( pom, 2 ) ); 
    248248        } 
    249         return tmp - pow ( mean(), 2 ); 
     249        return tmp; 
    250250} 
    251251vec eprod_base::sample() const { 
  • library/bdm/stat/exp_family.h

    r896 r900  
    18791879                double evallog (const vec &dt) const {return -inf;} 
    18801880                vec mean () const {return point;} 
    1881                 vec variance () const {return pow(point,2);} 
     1881                vec variance () const {return zeros(point.length());} 
    18821882                void qbounds ( vec &lb, vec &ub, double percentage = 0.95 ) const { lb = point; ub = point;} 
    18831883                //! access