#include #include #include using namespace itpp; //These lines are needed for use of cout and endl using std::cout; using std::endl; void disp(const vec &tmu, const mat &tR,const mat &Smp){ int N = Smp.cols(); vec Emu = Smp*ones(N) /N ; mat Er = (Smp*Smp.transpose())/N - outer_product(Emu,Emu); cout << "True mu:" << tmu < eN(rv); eN.set_parameters(mu0,R); mat Smp = eN.sample(N); disp(mu0,R.to_mat(),Smp); cout << "====== MlNorm ====== " < ML(rv,rv); ML.set_parameters(I,R); Smp = ML.samplecond(mu0,lik,N); disp(mu0,R.to_mat(),Smp); cout << "====== EGamma ====== " < Coms(2); Coms(0) = &eG; Coms(1) = &eN; eMix.set_parameters(vec_2(0.5,0.5), Coms); vec smp = eMix.sample(); Smp = eMix.sampleN(N); disp(eMix.mean(),zeros(2),Smp); cout << "======= MEpdf ======== " << endl; mepdf meMix(rv,rv,&eMix); Smp = meMix.samplecond(mu0,lik,N); disp(eMix.mean(),zeros(2),Smp); cout << "======= MMix ======== " << endl; mmix mMix(rv,rv); Array mComs(2); mComs(0) = &mG; eN.set_mu(vec_2(0.0,0.0)); mepdf mEnorm(rv,rv,&eN); mComs(1) = &mEnorm; mMix.set_parameters(vec_2(0.5,0.5),mComs); Smp = mMix.samplecond(mu0,lik,N); disp(mMix._epdf().mean(),zeros(2),Smp); //Exit program: return 0; }