33 #include <itpp/itexports.h> 
   48   GMM(
int nomix, 
int dim);
 
   49   GMM(std::string filename);
 
   50   void init_from_vq(
const vec &codebook, 
int dim);
 
   52   void init(
const vec &w_in, 
const mat &m_in, 
const mat &sigma_in);
 
   53   void load(std::string filename);
 
   54   void save(std::string filename);
 
   55   void set_weight(
const vec &weights, 
bool compflag = 
true);
 
   56   void set_weight(
int i, 
double weight, 
bool compflag = 
true);
 
   57   void set_mean(
const mat &m_in);
 
   58   void set_mean(
const vec &means, 
bool compflag = 
true);
 
   59   void set_mean(
int i, 
const vec &means, 
bool compflag = 
true);
 
   60   void set_covariance(
const mat &sigma_in);
 
   61   void set_covariance(
const vec &covariances, 
bool compflag = 
true);
 
   62   void set_covariance(
int i, 
const vec &covariances, 
bool compflag = 
true);
 
   63   int get_no_mixtures();
 
   64   int get_no_gaussians()
 const { 
return M; }
 
   67   double get_weight(
int i);
 
   71   vec get_covariance(
int i);
 
   72   void marginalize(
int d_new);
 
   73   void join(
const GMM &newgmm);
 
   75   double likelihood(
const vec &x);
 
   76   double likelihood_aposteriori(
const vec &x, 
int mixture);
 
   77   vec likelihood_aposteriori(
const vec &x);
 
   83   void  compute_internals();
 
   84   vec   normweight, normexp;
 
   87 inline void GMM::set_weight(
const vec &weights, 
bool compflag) {w = weights; 
if (compflag) compute_internals(); }
 
   88 inline void GMM::set_weight(
int i, 
double weight, 
bool compflag) {w(i) = 
weight; 
if (compflag) compute_internals(); }
 
   89 inline void GMM::set_mean(
const vec &means, 
bool compflag) {m = means; 
if (compflag) compute_internals(); }
 
   90 inline void GMM::set_covariance(
const vec &covariances, 
bool compflag) {sigma = covariances; 
if (compflag) compute_internals(); }
 
   91 inline int GMM::get_dimension() {
return d;}
 
   92 inline vec GMM::get_weight() {
return w;}
 
   93 inline double GMM::get_weight(
int i) {
return w(i);}
 
   94 inline vec GMM::get_mean() {
return m;}
 
   95 inline vec GMM::get_mean(
int i) {
return m.mid(i*d, d);}
 
   96 inline vec GMM::get_covariance() {
return sigma;}
 
   97 inline vec GMM::get_covariance(
int i) {
return sigma.mid(i*d, d);}
 
   99 ITPP_EXPORT GMM gmmtrain(Array<vec> &TrainingData, 
int M, 
int NOITER = 30, 
bool VERBOSE = 
true);
 
  105 #endif // #ifndef GMM_H