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/testSmp.cpp

    r461 r477  
    99using std::endl; 
    1010 
    11 void disp(const vec &tmu, const mat &tR,const mat &Smp){ 
     11void disp ( const vec &tmu, const mat &tR, const mat &Smp ) { 
    1212        int N = Smp.cols(); 
    13         vec Emu = Smp*ones(N) /N ; 
    14         mat Er = (Smp*Smp.transpose())/N - outer_product(Emu,Emu); 
    15         cout << "True mu:" << tmu <<endl; 
    16         cout << "Emp  mu:" << Emu <<endl; 
    17          
    18         cout << "True R:" << tR <<endl; 
    19         cout << "Emp  R:" << Er <<endl; 
     13        vec Emu = Smp * ones ( N ) / N ; 
     14        mat Er = ( Smp * Smp.transpose() ) / N - outer_product ( Emu, Emu ); 
     15        cout << "True mu:" << tmu << endl; 
     16        cout << "Emp  mu:" << Emu << endl; 
     17 
     18        cout << "True R:" << tR << endl; 
     19        cout << "Emp  R:" << Er << endl; 
    2020} 
    2121 
     
    2424        RNG_randomize(); 
    2525 
    26         RV x("{x }","2"); 
    27         RV y("{y }","2"); 
     26        RV x ( "{x }", "2" ); 
     27        RV y ( "{y }", "2" ); 
    2828        int N = 10000; //number of samples 
    2929        vec mu0 = "1.5 1.7"; 
    30         mat V0("1.2 0.3; 0.3 5"); 
    31         ldmat R = ldmat(V0); 
    32          
    33         cout << "====== ENorm ====== " <<endl; 
     30        mat V0 ( "1.2 0.3; 0.3 5" ); 
     31        ldmat R = ldmat ( V0 ); 
     32 
     33        cout << "====== ENorm ====== " << endl; 
    3434        enorm<ldmat> eN; 
    35         eN.set_parameters(mu0,R); 
    36         mat Smp = eN.sample_m(N); 
     35        eN.set_parameters ( mu0, R ); 
     36        mat Smp = eN.sample_m ( N ); 
    3737 
    38         disp(mu0,R.to_mat(),Smp); 
     38        disp ( mu0, R.to_mat(), Smp ); 
    3939 
    40         cout << "====== MlNorm ====== " <<endl; 
    41         mat I = eye(2); 
     40        cout << "====== MlNorm ====== " << endl; 
     41        mat I = eye ( 2 ); 
    4242        mlnorm<ldmat> ML; 
    43         ML.set_parameters(I,zeros(2),R); 
    44         Smp = ML.samplecond_m(mu0,N); 
    45          
    46         disp(mu0,R.to_mat(),Smp); 
     43        ML.set_parameters ( I, zeros ( 2 ), R ); 
     44        Smp = ML.samplecond_m ( mu0, N ); 
    4745 
    48         cout << "====== EGamma ====== " <<endl;  
     46        disp ( mu0, R.to_mat(), Smp ); 
     47 
     48        cout << "====== EGamma ====== " << endl; 
    4949        vec a = "100000,10000"; 
    50         vec b = a/10.0; 
     50        vec b = a / 10.0; 
    5151        egamma eG; 
    52         eG.set_parameters(a,b); 
    53          
    54         cout << eG.evallog(a)<<endl; 
    55         Smp = eG.sample_m(N); 
     52        eG.set_parameters ( a, b ); 
    5653 
    57         vec g_mu = elem_div(a,b); 
    58         vec g_var = elem_div(a,pow(b,2.0)); 
    59         disp(g_mu,diag(g_var),Smp); 
     54        cout << eG.evallog ( a ) << endl; 
     55        Smp = eG.sample_m ( N ); 
    6056 
    61         cout << "====== MGamma ====== " <<endl;  
     57        vec g_mu = elem_div ( a, b ); 
     58        vec g_var = elem_div ( a, pow ( b, 2.0 ) ); 
     59        disp ( g_mu, diag ( g_var ), Smp ); 
     60 
     61        cout << "====== MGamma ====== " << endl; 
    6262        mgamma mG; 
    6363        double k = 10.0; 
    64         mG.set_parameters(k,mu0); 
     64        mG.set_parameters ( k, mu0 ); 
    6565 
    66         Smp=mG.samplecond_m(mu0,N); 
    67         disp(mu0,pow(mu0,2.0)/k,Smp); 
    68          
     66        Smp = mG.samplecond_m ( mu0, N ); 
     67        disp ( mu0, pow ( mu0, 2.0 ) / k, Smp ); 
     68 
    6969        cout << "======= EMix ======== " << endl; 
    7070        emix eMix; 
    71         Array<epdf*> Coms(2); 
    72         Coms(0) = &eG; 
    73         Coms(1) = &eN; 
    74          
    75         eMix.set_parameters(vec_2(0.5,0.5), Coms); 
     71        Array<epdf*> Coms ( 2 ); 
     72        Coms ( 0 ) = &eG; 
     73        Coms ( 1 ) = &eN; 
     74 
     75        eMix.set_parameters ( vec_2 ( 0.5, 0.5 ), Coms ); 
    7676        vec smp = eMix.sample(); 
    77         Smp = eMix.sample_m(N); 
    78         disp(eMix.mean(),zeros(2),Smp); 
     77        Smp = eMix.sample_m ( N ); 
     78        disp ( eMix.mean(), zeros ( 2 ), Smp ); 
    7979 
    8080        cout << "======= MEpdf ======== " << endl; 
    81         mepdf meMix(&eMix); 
    82          
    83         Smp = meMix.samplecond_m(mu0,N); 
    84         disp(eMix.mean(),zeros(2),Smp); 
     81        mepdf meMix ( &eMix ); 
     82 
     83        Smp = meMix.samplecond_m ( mu0, N ); 
     84        disp ( eMix.mean(), zeros ( 2 ), Smp ); 
    8585 
    8686        cout << "======= MMix ======== " << endl; 
    8787        mmix mMix; 
    88         Array<mpdf*> mComs(2); 
    89         mComs(0) = &mG; 
    90         eN.set_mu(vec_2(0.0,0.0)); 
    91         mepdf mEnorm(&eN); 
    92         mComs(1) = &mEnorm; 
    93         mMix.set_parameters(vec_2(0.5,0.5),mComs); 
    94          
    95         Smp = mMix.samplecond_m(mu0,N); 
    96         disp(mMix.e()->mean(), zeros(2), Smp); 
     88        Array<mpdf*> mComs ( 2 ); 
     89        mComs ( 0 ) = &mG; 
     90        eN.set_mu ( vec_2 ( 0.0, 0.0 ) ); 
     91        mepdf mEnorm ( &eN ); 
     92        mComs ( 1 ) = &mEnorm; 
     93        mMix.set_parameters ( vec_2 ( 0.5, 0.5 ), mComs ); 
     94 
     95        Smp = mMix.samplecond_m ( mu0, N ); 
     96        disp ( mMix.e()->mean(), zeros ( 2 ), Smp ); 
    9797 
    9898        cout << "======= EProd ======== " << endl; 
    9999        // we have to change eG.rv to y 
    100         eN.set_rv(x); 
    101         eG.set_rv(y); 
    102         //create array  
    103         Array<mpdf*> A(2); 
    104         mepdf meN(&eN); 
    105         mepdf meG(&eG); 
    106         A(0) = &meN; 
    107         A(1) = &meG; 
    108          
    109         mprod eP(A); 
    110         mat epV=zeros(4,4); 
    111         epV.set_submatrix(0,0,V0); 
    112         epV.set_submatrix(2,2,diag(g_var)); 
    113          
    114         vec v0=vec(0); 
    115         Smp = eP.samplecond(v0,N); 
    116         disp(concat(eN.mean(),eG.mean()), epV,Smp); 
    117          
     100        eN.set_rv ( x ); 
     101        eG.set_rv ( y ); 
     102        //create array 
     103        Array<mpdf*> A ( 2 ); 
     104        mepdf meN ( &eN ); 
     105        mepdf meG ( &eG ); 
     106        A ( 0 ) = &meN; 
     107        A ( 1 ) = &meG; 
     108 
     109        mprod eP ( A ); 
     110        mat epV = zeros ( 4, 4 ); 
     111        epV.set_submatrix ( 0, 0, V0 ); 
     112        epV.set_submatrix ( 2, 2, diag ( g_var ) ); 
     113 
     114        vec v0 = vec ( 0 ); 
     115        Smp = eP.samplecond ( v0, N ); 
     116        disp ( concat ( eN.mean(), eG.mean() ), epV, Smp ); 
     117 
    118118        cout << "======= eWishart ======== " << endl; 
    119         mat wM="1.0 0.9; 0.9 1.0"; 
    120         eWishartCh eW; eW.set_parameters(wM/100,100); 
    121         mat mea=zeros(2,2); 
    122         mat Ch(2,2); 
    123         for (int i=0;i<100;i++){Ch=eW.sample_mat(); mea+=Ch.T()*Ch;} 
    124         cout << mea /100 <<endl; 
    125          
     119        mat wM = "1.0 0.9; 0.9 1.0"; 
     120        eWishartCh eW; 
     121        eW.set_parameters ( wM / 100, 100 ); 
     122        mat mea = zeros ( 2, 2 ); 
     123        mat Ch ( 2, 2 ); 
     124        for ( int i = 0; i < 100; i++ ) { 
     125                Ch = eW.sample_mat(); 
     126                mea += Ch.T() * Ch; 
     127        } 
     128        cout << mea / 100 << endl; 
     129 
    126130        cout << "======= rwiWishart ======== " << endl; 
    127         rwiWishartCh rwW; rwW.set_parameters(2,0.1,"1 1",0.9); 
    128         mea=zeros(2,2); 
    129         mat wMch=chol(wM); 
    130         for (int i=0;i<100;i++){  
    131                 vec tmp=rwW.samplecond(vec(wMch._data(),4)); 
    132                  copy_vector(4,tmp._data(), Ch._data());  
    133                  mea+=Ch.T()*Ch; 
     131        rwiWishartCh rwW; 
     132        rwW.set_parameters ( 2, 0.1, "1 1", 0.9 ); 
     133        mea = zeros ( 2, 2 ); 
     134        mat wMch = chol ( wM ); 
     135        for ( int i = 0; i < 100; i++ ) { 
     136                vec tmp = rwW.samplecond ( vec ( wMch._data(), 4 ) ); 
     137                copy_vector ( 4, tmp._data(), Ch._data() ); 
     138                mea += Ch.T() * Ch; 
    134139        } 
    135         cout << mea /100 <<endl; 
     140        cout << mea / 100 << endl; 
    136141        //Exit program: 
    137142        return 0;