Changeset 213 for bdm/estim/merger.cpp

Show
Ignore:
Timestamp:
11/25/08 12:24:42 (15 years ago)
Author:
smidl
Message:

Merging - new experiment

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • bdm/estim/merger.cpp

    r211 r213  
    66        int nu=lW.rows(); 
    77        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 ) ); 
    910        double coef=0.0; 
    1011        vec sq2bl=sqrt ( 2*beta*lam ); //this term is everywhere 
     
    6162        char str[100]; 
    6263 
    63         epdf* Mpred=Mix.predictor(rv); 
     64        epdf* Mpred=Mix.predictor ( rv ); 
    6465        vec Mix_pdf ( Ns ); 
    6566        while ( !converged ) { 
     
    7071                delete Mpred; 
    7172                Mpred = Mix.predictor ( rv ); // Allocation => must be deleted at the end!! 
    72                  
     73 
     74                // This will be active only later in iterations!!! 
    7375                if ( 1./sum_sqr ( w ) <0.5*Ns ) { 
    7476                        // Generate new samples 
     
    7678                        for ( int i=0;i<Ns;i++ ) { 
    7779                                //////////// !!!!!!!!!!!!! 
    78                                 if ( Smp ( i ) ( 1 ) <0 ) {Smp ( i ) ( 1 ) = 0.01; } 
     80                                if ( Smp ( i ) ( 2 ) <0 ) {Smp ( i ) ( 2 ) = 0.01; } 
    7981                                set_col_part ( Smp_ex,i,Smp ( i ) ); 
    8082                        } 
    81                         {cout<<"Resampling =" << 1./sum_sqr ( w ) << endl;} 
     83                        if(0){cout<<"Resampling =" << 1./sum_sqr ( w ) << endl; 
    8284                        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;} 
    8486                } 
    8587//              sprintf ( str,"Mpred_mean%d",niter ); 
     
    172174                } 
    173175                else { 
    174  
     176                        it_file itf ( "merg_err.it" ); 
     177                        itf << Name ( "w" ) << w; 
    175178                } 
    176179 
     
    188191                converged = ( niter>20 ); 
    189192        } 
     193        delete Mpred; 
    190194        cout << endl; 
    191195