Show
Ignore:
Timestamp:
08/05/09 14:40:03 (15 years ago)
Author:
mido
Message:

panove, vite, jak jsem peclivej na upravu kodu.. snad se vam bude libit:) konfigurace je v souboru /system/astylerc

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/tests/emix_test.cpp

    r461 r477  
    99using std::endl; 
    1010 
    11 double normcoef ( const epdf* ep,const vec &xb, const vec &yb, int Ngr=100 ) { 
    12         mat PPdf ( Ngr+1,Ngr+1 ); 
     11double normcoef ( const epdf* ep, const vec &xb, const vec &yb, int Ngr = 100 ) { 
     12        mat PPdf ( Ngr + 1, Ngr + 1 ); 
    1313        vec rgr ( 2 ); 
    1414 
    15         int i=0,j=0; 
    16         double xstep= ( xb ( 1 )-xb ( 0 ) ) /Ngr; 
    17         double ystep= ( yb ( 1 )-yb ( 0 ) ) /Ngr; 
     15        int i = 0, j = 0; 
     16        double xstep = ( xb ( 1 ) - xb ( 0 ) ) / Ngr; 
     17        double ystep = ( yb ( 1 ) - yb ( 0 ) ) / Ngr; 
    1818 
    19         for ( double x=xb ( 0 );x<=xb ( 1 );x+= xstep,i++ ) { 
    20                 rgr ( 0 ) =x;j=0; 
    21                 for ( double y=yb ( 0 );y<=yb ( 1 );y+=ystep,j++ ) { 
    22                         rgr ( 1 ) =y; 
    23                         PPdf ( i,j ) =exp ( ep->evallog ( rgr ) ); 
     19        for ( double x = xb ( 0 ); x <= xb ( 1 ); x += xstep, i++ ) { 
     20                rgr ( 0 ) = x; 
     21                j = 0; 
     22                for ( double y = yb ( 0 ); y <= yb ( 1 ); y += ystep, j++ ) { 
     23                        rgr ( 1 ) = y; 
     24                        PPdf ( i, j ) = exp ( ep->evallog ( rgr ) ); 
    2425                } 
    2526        } 
     
    3233        RV x ( "{x }" ); 
    3334        RV y ( "{y }" ); 
    34         RV xy=concat(x,y); 
    35          
    36         enorm<ldmat> E1; E1.set_rv ( xy ); 
    37                  
    38         E1.set_parameters( "1.00054 1.0455" , mat ( "0.740142 -0.259015; -0.259015 1.0302" )); 
    39         enorm<ldmat> E2;E2.set_rv ( xy ); 
    40         E2.set_parameters( "-1.2 -0.1" , mat ( "1 0.4; 0.4 0.5" )); 
     35        RV xy = concat ( x, y ); 
    4136 
    42         Array<epdf*> A1(1); 
    43         A1(0) = &E1; 
    44          
    45         emix M1; M1.set_rv(xy); 
    46         M1.set_parameters(vec("1"), A1, false); 
    47         cout << "======== test if ARX and emix with one ARX are the same ==="<<endl; 
    48          
    49         epdf* Mm = M1.marginal(y); 
    50         epdf* Am = E1.marginal(y); 
    51         mpdf* Mc = M1.condition(y); 
    52         mpdf* Ac = E1.condition(y); 
    53          
    54         cout << *((mlnorm<ldmat>*)Ac) <<endl; 
    55          
    56         cout << "Mix marg at 0: " << Mm->evallog(vec_1(0.0)) <<endl; 
    57         cout << "ARX marg at 0: " << Am->evallog(vec_1(0.0)) <<endl; 
    58         cout << "Mix cond at 0,0: " << Mc->evallogcond(vec_1(0.0),vec_1(0.0)) <<endl; 
    59         cout << "ARX cond at 0,0: " << Ac->evallogcond(vec_1(0.0),vec_1(0.0)) <<endl; 
    60          
    61         cout << "======== Mixture with two components ==="<<endl; 
    62         Array<epdf*> A2(2); 
    63         A2(0) = &E1; 
    64         A2(1) = &E2; 
    65          
    66         emix M2; M2.set_rv(xy); 
    67         M2.set_parameters(vec("1"), A2, false); 
    68          
    69          
    70         cout << "Mixture normalization: " << normcoef(&M2, vec("-3 3 "), vec("-3 3 ")) <<endl; 
    71          
    72         int N=3; 
     37        enorm<ldmat> E1; 
     38        E1.set_rv ( xy ); 
     39 
     40        E1.set_parameters ( "1.00054 1.0455" , mat ( "0.740142 -0.259015; -0.259015 1.0302" ) ); 
     41        enorm<ldmat> E2; 
     42        E2.set_rv ( xy ); 
     43        E2.set_parameters ( "-1.2 -0.1" , mat ( "1 0.4; 0.4 0.5" ) ); 
     44 
     45        Array<epdf*> A1 ( 1 ); 
     46        A1 ( 0 ) = &E1; 
     47 
     48        emix M1; 
     49        M1.set_rv ( xy ); 
     50        M1.set_parameters ( vec ( "1" ), A1, false ); 
     51        cout << "======== test if ARX and emix with one ARX are the same ===" << endl; 
     52 
     53        epdf* Mm = M1.marginal ( y ); 
     54        epdf* Am = E1.marginal ( y ); 
     55        mpdf* Mc = M1.condition ( y ); 
     56        mpdf* Ac = E1.condition ( y ); 
     57 
     58        cout << * ( ( mlnorm<ldmat>* ) Ac ) << endl; 
     59 
     60        cout << "Mix marg at 0: " << Mm->evallog ( vec_1 ( 0.0 ) ) << endl; 
     61        cout << "ARX marg at 0: " << Am->evallog ( vec_1 ( 0.0 ) ) << endl; 
     62        cout << "Mix cond at 0,0: " << Mc->evallogcond ( vec_1 ( 0.0 ), vec_1 ( 0.0 ) ) << endl; 
     63        cout << "ARX cond at 0,0: " << Ac->evallogcond ( vec_1 ( 0.0 ), vec_1 ( 0.0 ) ) << endl; 
     64 
     65        cout << "======== Mixture with two components ===" << endl; 
     66        Array<epdf*> A2 ( 2 ); 
     67        A2 ( 0 ) = &E1; 
     68        A2 ( 1 ) = &E2; 
     69 
     70        emix M2; 
     71        M2.set_rv ( xy ); 
     72        M2.set_parameters ( vec ( "1" ), A2, false ); 
     73 
     74 
     75        cout << "Mixture normalization: " << normcoef ( &M2, vec ( "-3 3 " ), vec ( "-3 3 " ) ) << endl; 
     76 
     77        int N = 3; 
    7378        vec ll ( N ); 
    7479        vec ll2 ( N ); 
    75         mat Smp=M2.sample_m ( N ); 
    76         ll = M2.evallog_m(Smp); 
    77          
    78         vec Emu = sum ( Smp,2 ) /N; 
    79         mat Er = ( Smp*Smp.transpose() ) /N - outer_product ( Emu,Emu ); 
     80        mat Smp = M2.sample_m ( N ); 
     81        ll = M2.evallog_m ( Smp ); 
    8082 
    81         cout << "original empirical mean: " <<Emu <<endl; 
    82         cout << "original empirical variance: " <<Er <<endl; 
     83        vec Emu = sum ( Smp, 2 ) / N; 
     84        mat Er = ( Smp * Smp.transpose() ) / N - outer_product ( Emu, Emu ); 
    8385 
    84         shared_ptr<epdf> Mg(dynamic_cast<epdf *>(M2.marginal(y))); 
    85         mpdf* Cn = (mpdf*)M2.condition ( x ); 
     86        cout << "original empirical mean: " << Emu << endl; 
     87        cout << "original empirical variance: " << Er << endl; 
    8688 
    87         it_file it("emix_test.it"); 
    88         it << Name("Smp") << Smp; 
     89        shared_ptr<epdf> Mg ( dynamic_cast<epdf *> ( M2.marginal ( y ) ) ); 
     90        mpdf* Cn = ( mpdf* ) M2.condition ( x ); 
    8991 
    90         cout<< "marginal mean: " << Mg->mean() <<endl; 
     92        it_file it ( "emix_test.it" ); 
     93        it << Name ( "Smp" ) << Smp; 
    9194 
    92         cout << "========== putting them back together ======= "<<endl; 
     95        cout << "marginal mean: " << Mg->mean() << endl; 
     96 
     97        cout << "========== putting them back together ======= " << endl; 
    9398        mepdf mMg ( Mg ); 
    9499        Array<mpdf*> AA ( 2 ); 
     
    97102        mprod mEp ( AA ); 
    98103 
    99         for (int j=0; j<N; j++){ 
    100                 ll2(j)=mEp.evallogcond (Smp.get_col(j), vec ( 0 )); 
     104        for ( int j = 0; j < N; j++ ) { 
     105                ll2 ( j ) = mEp.evallogcond ( Smp.get_col ( j ), vec ( 0 ) ); 
    101106        } 
    102         it << Name("ll") << ll; 
    103         it << Name("ll2") << ll2; 
    104          
    105          
     107        it << Name ( "ll" ) << ll; 
     108        it << Name ( "ll2" ) << ll2; 
     109 
     110 
    106111}