Changeset 213 for bdm/estim/merger.cpp
- Timestamp:
- 11/25/08 12:24:42 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
bdm/estim/merger.cpp
r211 r213 6 6 int nu=lW.rows(); 7 7 vec mu = sum ( lW ) /nu; //mean of logs 8 vec lam = sum ( pow ( lW,2 ) )-nu*pow ( mu,2 ); 8 // vec lam = sum ( pow ( lW,2 ) )-nu*pow ( mu,2 ); ======= numerically unsafe! 9 vec lam = sum ( pow ( lW-outer_product ( ones ( lW.rows() ),mu ),2 ) ); 9 10 double coef=0.0; 10 11 vec sq2bl=sqrt ( 2*beta*lam ); //this term is everywhere … … 61 62 char str[100]; 62 63 63 epdf* Mpred=Mix.predictor (rv);64 epdf* Mpred=Mix.predictor ( rv ); 64 65 vec Mix_pdf ( Ns ); 65 66 while ( !converged ) { … … 70 71 delete Mpred; 71 72 Mpred = Mix.predictor ( rv ); // Allocation => must be deleted at the end!! 72 73 74 // This will be active only later in iterations!!! 73 75 if ( 1./sum_sqr ( w ) <0.5*Ns ) { 74 76 // Generate new samples … … 76 78 for ( int i=0;i<Ns;i++ ) { 77 79 //////////// !!!!!!!!!!!!! 78 if ( Smp ( i ) ( 1 ) <0 ) {Smp ( i ) ( 1) = 0.01; }80 if ( Smp ( i ) ( 2 ) <0 ) {Smp ( i ) ( 2 ) = 0.01; } 79 81 set_col_part ( Smp_ex,i,Smp ( i ) ); 80 82 } 81 {cout<<"Resampling =" << 1./sum_sqr ( w ) << endl;}83 if(0){cout<<"Resampling =" << 1./sum_sqr ( w ) << endl; 82 84 cout << sum ( Smp_ex,2 ) /Ns <<endl; 83 cout << Smp_ex*Smp_ex.T() /Ns << endl;85 cout << Smp_ex*Smp_ex.T() /Ns << endl;} 84 86 } 85 87 // sprintf ( str,"Mpred_mean%d",niter ); … … 172 174 } 173 175 else { 174 176 it_file itf ( "merg_err.it" ); 177 itf << Name ( "w" ) << w; 175 178 } 176 179 … … 188 191 converged = ( niter>20 ); 189 192 } 193 delete Mpred; 190 194 cout << endl; 191 195