00001
00005
00006 #ifndef DIVERGENCE_H
00007 #define DIVERGENCE_H
00008
00009 #define INF 1e20;
00010 #define IntLimit 4;
00011
00013 class Divergence {
00014
00015
00016 private:
00018 float* MeanA;
00020 float* MeanB;
00022 float** CovA;
00024 float** CovB;
00026 float** InvCovA;
00028 float** InvCovB;
00030 float *a;
00032 float *b;
00034 float xsav,ysav;
00036 float determinantA, determinantB;
00038 int nb_dim;
00040 int nb_Gdim;
00041
00042
00043
00044 public:
00046 Divergence(int nb_dimensions);
00048 virtual ~Divergence();
00052 void Initialise ( float** C_A, float** C_B, float *M_A, float* M_B);
00063 int BoundResolution_Calculation(float *min_bound,float *max_bound,float *resolution,float PrecisionFactor);
00065 void InvertCovMatrix();
00067 float MeanDifference();
00078 float Divergence2GaussModel(float *min_bound,float *max_bound,float *resolution, float weight);
00079 private:
00083 float Div_MultiDimFunc(float x,float y, float z);
00085 void BoundCalculus(float *pas, float *resolution);
00090 float Integration();
00094 float f1(float x);
00098 float f2(float y);
00102 float f3(float z);
00106 float Qgaus(float (Divergence::*func)(float),float a, float b);
00107 };
00108
00109 #endif