Changeset 281 for bdm/estim/libPF.h
- Timestamp:
- 02/24/09 14:13:23 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
bdm/estim/libPF.h
r279 r281 39 39 //! Observation model 40 40 mpdf *obs; 41 42 //! \name Options 43 //!@{ 44 45 //! Log resampling times 46 bool opt_L_res; 47 //! Log all samples 48 bool opt_L_smp; 49 //!@} 50 41 51 public: 42 52 //! \name Constructors 43 53 //!@{ 44 54 PF ( ) :est(), _w ( est._w() ),_samples ( est._samples() ) {}; 45 PF ( mpdf *par0, mpdf *obs0, epdf *epdf0, int n0 ) :46 est ( ),_w ( est._w() ),_samples ( est._samples() ) 47 { par = par0; obs=obs0; est.set_parameters ( ones(n0),epdf0 ); };48 void set_parameters ( mpdf *par0, mpdf *obs0, int n0 ) 49 { par = par0; obs=obs0; n=n0; est.set_n(n);};50 void set_statistics ( const vec w0, epdf *epdf0){est.set_parameters ( w0,epdf0 );};55 PF ( mpdf *par0, mpdf *obs0, epdf *epdf0, int n0 ) : 56 est ( ),_w ( est._w() ),_samples ( est._samples() ) 57 { set_parameters ( par0,obs0,n0 ); set_statistics ( ones ( n0 ),epdf0 ); }; 58 void set_parameters ( mpdf *par0, mpdf *obs0, int n0 ) 59 { par = par0; obs=obs0; n=n0; est.set_n ( n );}; 60 void set_statistics ( const vec w0, epdf *epdf0 ) {est.set_parameters ( w0,epdf0 );}; 51 61 //!@} 52 62 //! Set posterior density by sampling from epdf0 53 63 void set_est ( const epdf &epdf0 ); 64 void set_options(const string &opt){ 65 opt_L_res= ( s.find ( "logres" ) !=string::npos ); 66 opt_L_smp= ( s.find ( "logsmp" ) !=string::npos ); 67 } 54 68 void bayes ( const vec &dt ); 55 69 //!access function … … 76 90 Array<const epdf*> Coms; 77 91 public: 78 mpfepdf ( eEmp &E0 ) :92 mpfepdf ( eEmp &E0 ) : 79 93 epdf ( ), E ( E0 ), _w ( E._w() ), 80 94 Coms ( _w.length() ) { … … 83 97 {_w ( i ) =wi; Coms ( i ) =ep;}; 84 98 85 void set_n (int n){E.set_n(n); Coms.set_length(n);}99 void set_n ( int n ) {E.set_n ( n ); Coms.set_length ( n );} 86 100 vec mean() const { 87 101 // ugly 88 vec pom=zeros ( Coms (0)->dimension() );102 vec pom=zeros ( Coms ( 0 )->dimension() ); 89 103 for ( int i=0; i<_w.length(); i++ ) {pom += Coms ( i )->mean() * _w ( i );} 90 104 return concat ( E.mean(),pom ); … … 93 107 // ugly 94 108 vec pom=zeros ( Coms ( 0 )->dimension() ); 95 vec pom2=zeros ( 109 vec pom2=zeros ( Coms ( 0 )->dimension() ); 96 110 for ( int i=0; i<_w.length(); i++ ) { 97 111 pom += Coms ( i )->mean() * _w ( i ); … … 106 120 }; 107 121 108 //! estimate joining PF.est with conditional122 //! Density joining PF.est with conditional parts 109 123 mpfepdf jest; 110 124 125 //! Log means of BMs 126 bool opt_L_mea; 127 111 128 public: 112 129 //! Default constructor. 113 130 MPF ( mpdf *par0, mpdf *obs0, int n, const BM_T &BMcond0 ) : PF (), jest ( est ) { 114 PF::set_parameters (par0,obs0,n);115 jest.set_n (n);131 PF::set_parameters ( par0,obs0,n ); 132 jest.set_n ( n ); 116 133 // 117 134 //TODO test if rv and BMcond.rv are compatible. … … 141 158 for ( int i=0;i<n;i++ ) {Bms[i]->condition ( _samples ( i ) );} 142 159 } 143 160 void set_options(const string &opt){ 161 PF:set_options(opt); 162 opt_L_mea = ( s.find ( "logmeans" ) !=string::npos ); 163 } 164 144 165 //!Access function 145 166 BM* _BM ( int i ) {return Bms[i];}