Revision 384, 0.9 kB
(checked in by mido, 15 years ago)
|
possibly broken?
|
-
Property svn:eol-style set to
native
|
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; |
---|
| 11 | double mlls=-std::numeric_limits<double>::infinity(), sum=0.0; |
---|
[11] | 12 | |
---|
[32] | 13 | for ( i=0;i<n;i++ ) { |
---|
| 14 | //generate new samples from paramater evolution model; |
---|
[283] | 15 | _samples ( i ) = par->samplecond ( _samples ( i ) ); |
---|
| 16 | lls ( i ) = par->_e()->evallog ( _samples ( i ) ); |
---|
[270] | 17 | lls ( i ) *= obs->evallogcond ( dt,_samples ( i ) ); |
---|
[32] | 18 | |
---|
| 19 | if ( lls ( i ) >mlls ) mlls=lls ( i ); //find maximum |
---|
[11] | 20 | } |
---|
| 21 | |
---|
[32] | 22 | // compute weights |
---|
| 23 | for ( i=0;i<n;i++ ) { |
---|
| 24 | _w ( i ) *= exp ( lls ( i ) - mlls ); // multiply w by likelihood |
---|
[11] | 25 | } |
---|
| 26 | |
---|
[32] | 27 | //renormalize |
---|
| 28 | for ( i=0;i<n;i++ ) {sum+=_w ( i );}; |
---|
[11] | 29 | |
---|
[32] | 30 | _w ( i ) /=sum; //? |
---|
[11] | 31 | |
---|
[283] | 32 | ind = est.resample(resmethod); |
---|
[8] | 33 | |
---|
| 34 | } |
---|
| 35 | |
---|
[283] | 36 | // void PF::set_est ( const epdf &epdf0 ) { |
---|
| 37 | // int i; |
---|
| 38 | // |
---|
| 39 | // for ( i=0;i<n;i++ ) { |
---|
| 40 | // _samples ( i ) = epdf0.sample(); |
---|
| 41 | // } |
---|
| 42 | // } |
---|
[8] | 43 | |
---|
[32] | 44 | |
---|
[254] | 45 | } |
---|
[32] | 46 | //MPF::MPF:{} |
---|