annotate maths/KLDivergence.h @ 272:330c2e11f8a9

* Build fixes for gcc 4.3.2 * _Maybe_, but probably not, fix crash in tempo tracker... let's see how we get on
author Chris Cannam <c.cannam@qmul.ac.uk>
date Mon, 10 Nov 2008 14:01:55 +0000
parents f49be56d3c4e
children e5907ae6de17
rev   line source
c@256 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
c@256 2
c@256 3 /*
c@256 4 QM DSP Library
c@256 5
c@256 6 Centre for Digital Music, Queen Mary, University of London.
c@258 7 This file copyright 2008 QMUL.
c@256 8 All rights reserved.
c@256 9 */
c@256 10
c@256 11 #ifndef KLDIVERGENCE_H
c@256 12 #define KLDIVERGENCE_H
c@256 13
c@256 14 #include <vector>
c@256 15
c@256 16 using std::vector;
c@256 17
c@256 18 /**
c@258 19 * Helper methods for calculating Kullback-Leibler divergences.
c@256 20 */
c@256 21 class KLDivergence
c@256 22 {
c@256 23 public:
c@256 24 KLDivergence() { }
c@256 25 ~KLDivergence() { }
c@256 26
c@258 27 /**
c@258 28 * Calculate a symmetrised Kullback-Leibler divergence of Gaussian
c@258 29 * models based on mean and variance vectors. All input vectors
c@258 30 * must be of equal size.
c@258 31 */
c@258 32 double distanceGaussian(const vector<double> &means1,
c@258 33 const vector<double> &variances1,
c@258 34 const vector<double> &means2,
c@258 35 const vector<double> &variances2);
c@258 36
c@258 37 /**
c@258 38 * Calculate a Kullback-Leibler divergence of two probability
c@258 39 * distributions. Input vectors must be of equal size. If
c@258 40 * symmetrised is true, the result will be the symmetrised
c@258 41 * distance (equal to KL(d1, d2) + KL(d2, d1)).
c@258 42 */
c@258 43 double distanceDistribution(const vector<double> &d1,
c@258 44 const vector<double> &d2,
c@258 45 bool symmetrised);
c@256 46 };
c@256 47
c@256 48 #endif
c@256 49