root/library/bdm/estim/particles.cpp
@
487
Revision 487, 0.9 kB (checked in by smidl, 15 years ago) | |
---|---|
|
Rev | Line | |
---|---|---|
[384] | 1 | #include "particles.h" |
[8] | 2 | |
[283] | 3 | namespace bdm { |
[8] | 4 | |
5 | using std::endl; | |
6 | ||
[32] | 7 | void PF::bayes ( const vec &dt ) { |
8 | int i; | |
9 | vec lls ( n ); | |
10 | ivec ind; | |
[477] | 11 | double mlls = -std::numeric_limits<double>::infinity(), sum = 0.0; |
[11] | 12 | |
[477] | 13 | for ( i = 0; i < n; i++ ) { |
[32] | 14 | //generate new samples from paramater evolution model; |
[487] | 15 | vec old_smp=_samples ( i ); |
16 | _samples ( i ) = par->samplecond ( old_smp ); | |
17 | lls ( i ) = par->evallogcond ( _samples ( i ), old_smp ); | |
[477] | 18 | lls ( i ) *= obs->evallogcond ( dt, _samples ( i ) ); |
[32] | 19 | |
[477] | 20 | if ( lls ( i ) > mlls ) mlls = lls ( i ); //find maximum |
[11] | 21 | } |
22 | ||
[32] | 23 | // compute weights |
[477] | 24 | for ( i = 0; i < n; i++ ) { |
[32] | 25 | _w ( i ) *= exp ( lls ( i ) - mlls ); // multiply w by likelihood |
[11] | 26 | } |
27 | ||
[32] | 28 | //renormalize |
[477] | 29 | for ( i = 0; i < n; i++ ) { |
30 | sum += _w ( i ); | |
31 | }; | |
[11] | 32 | |
[477] | 33 | _w ( i ) /= sum; //? |
[11] | 34 | |
[477] | 35 | ind = est.resample ( resmethod ); |
[8] | 36 | |
37 | } | |
38 | ||
[283] | 39 | // void PF::set_est ( const epdf &epdf0 ) { |
40 | // int i; | |
[477] | 41 | // |
[283] | 42 | // for ( i=0;i<n;i++ ) { |
43 | // _samples ( i ) = epdf0.sample(); | |
44 | // } | |
45 | // } | |
[8] | 46 | |
[32] | 47 | |
[254] | 48 | } |
[32] | 49 | //MPF::MPF:{} |
Note: See TracBrowser
for help on using the browser.