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