00001 #include "indii/ml/aux/GaussianPdf.hpp"
00002 #include "indii/ml/aux/vector.hpp"
00003 #include "indii/ml/aux/matrix.hpp"
00004 #include "indii/ml/aux/Random.hpp"
00005
00006 #include "gsl/gsl_statistics_double.h"
00007
00008 #include <iostream>
00009
00010 using namespace std;
00011
00012 namespace aux = indii::ml::aux;
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 unsigned int N = 100000;
00032
00033
00034
00035
00036 int main(int argc, const char* argv[]) {
00037 aux::vector mu(1);
00038 aux::symmetric_matrix sigma(1);
00039 aux::vector sample;
00040 double data[N];
00041 unsigned int i;
00042
00043
00044 mu(0) = aux::Random::uniform(-5.0, 5.0);
00045 sigma(0,0) = aux::Random::uniform(0.0, 5.0);
00046 aux::GaussianPdf pdf(mu, sigma);
00047
00048
00049 for (i = 0; i < N; i++) {
00050 sample = pdf.sample();
00051 data[i] = sample(0);
00052 }
00053
00054
00055 cout << "True mean = " << mu(0) << endl;
00056 cout << "True variance = " << sigma(0,0) << endl;
00057 cout << "Sample mean = " << gsl_stats_mean(data, 1, N) << endl;
00058 cout << "Sample variance = " << gsl_stats_variance(data, 1, N) << endl;
00059 }