Mercurial > hg > qm-dsp
diff maths/KLDivergence.h @ 33:499d438b52ba
* Add KL divergence of histograms
author | cannam |
---|---|
date | Mon, 21 Jan 2008 18:02:47 +0000 |
parents | dfe38135e4c7 |
children | e5907ae6de17 |
line wrap: on
line diff
--- a/maths/KLDivergence.h Fri Jan 18 17:57:40 2008 +0000 +++ b/maths/KLDivergence.h Mon Jan 21 18:02:47 2008 +0000 @@ -4,7 +4,7 @@ QM DSP Library Centre for Digital Music, Queen Mary, University of London. - This file copyright 2008 QMUL + This file copyright 2008 QMUL. All rights reserved. */ @@ -16,21 +16,33 @@ using std::vector; /** - * Calculate a symmetrised Kullback-Leibler divergence of Gaussian - * models based on mean and variance vectors. All input vectors must - * be of equal size. + * Helper methods for calculating Kullback-Leibler divergences. */ - class KLDivergence { public: KLDivergence() { } ~KLDivergence() { } - double distance(const vector<double> &means1, - const vector<double> &variances1, - const vector<double> &means2, - const vector<double> &variances2); + /** + * Calculate a symmetrised Kullback-Leibler divergence of Gaussian + * models based on mean and variance vectors. All input vectors + * must be of equal size. + */ + double distanceGaussian(const vector<double> &means1, + const vector<double> &variances1, + const vector<double> &means2, + const vector<double> &variances2); + + /** + * Calculate a Kullback-Leibler divergence of two probability + * distributions. Input vectors must be of equal size. If + * symmetrised is true, the result will be the symmetrised + * distance (equal to KL(d1, d2) + KL(d2, d1)). + */ + double distanceDistribution(const vector<double> &d1, + const vector<double> &d2, + bool symmetrised); }; #endif