Changeset 900 for library/bdm/estim

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

particle bug fixing

Files:
1 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();