root/library/bdm/estim/particles.cpp
@
477
Revision 477, 0.9 kB (checked in by mido, 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; |
[283] | 15 | _samples ( i ) = par->samplecond ( _samples ( i ) ); |
[461] | 16 | lls ( i ) = par->e()->evallog ( _samples ( i ) ); |
[477] | 17 | lls ( i ) *= obs->evallogcond ( dt, _samples ( i ) ); |
[32] | 18 | |
[477] | 19 | if ( lls ( i ) > mlls ) mlls = lls ( i ); //find maximum |
[11] | 20 | } |
21 | ||
[32] | 22 | // compute weights |
[477] | 23 | for ( i = 0; i < n; i++ ) { |
[32] | 24 | _w ( i ) *= exp ( lls ( i ) - mlls ); // multiply w by likelihood |
[11] | 25 | } |
26 | ||
[32] | 27 | //renormalize |
[477] | 28 | for ( i = 0; i < n; i++ ) { |
29 | sum += _w ( i ); | |
30 | }; | |
[11] | 31 | |
[477] | 32 | _w ( i ) /= sum; //? |
[11] | 33 | |
[477] | 34 | ind = est.resample ( resmethod ); |
[8] | 35 | |
36 | } | |
37 | ||
[283] | 38 | // void PF::set_est ( const epdf &epdf0 ) { |
39 | // int i; | |
[477] | 40 | // |
[283] | 41 | // for ( i=0;i<n;i++ ) { |
42 | // _samples ( i ) = epdf0.sample(); | |
43 | // } | |
44 | // } | |
[8] | 45 | |
[32] | 46 | |
[254] | 47 | } |
[32] | 48 | //MPF::MPF:{} |
Note: See TracBrowser
for help on using the browser.