33#include <itpp/itexports.h>
50 void init_from_vq(
const vec &
codebook,
int dim);
55 void set_weight(
const vec &weights,
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);
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);
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;
87inline void GMM::set_weight(
const vec &weights,
bool compflag) {w = weights;
if (
compflag) compute_internals(); }
88inline void GMM::set_weight(
int i,
double weight,
bool compflag) {w(i) =
weight;
if (compflag) compute_internals(); }
89inline void GMM::set_mean(
const vec &means,
bool compflag) {m = means;
if (compflag) compute_internals(); }
90inline void GMM::set_covariance(
const vec &covariances,
bool compflag) {sigma = covariances;
if (compflag) compute_internals(); }
91inline int GMM::get_dimension() {
return d;}
92inline vec GMM::get_weight() {
return w;}
93inline double GMM::get_weight(
int i) {
return w(i);}
94inline vec GMM::get_mean() {
return m;}
95inline vec GMM::get_mean(
int i) {
return m.mid(i*d, d);}
96inline vec GMM::get_covariance() {
return sigma;}
97inline vec GMM::get_covariance(
int i) {
return sigma.mid(i*d, d);}
99ITPP_EXPORT GMM gmmtrain(Array<vec> &TrainingData,
int M,
int NOITER = 30,
bool VERBOSE =
true);
Gaussian Mixture Model Class.
int weight(const bvec &a)
Calculate the Hamming weight of a.
Matrix Class Definitions.