annotate maths/KLDivergence.h @ 31:dfe38135e4c7

* Add cosine distance and the self-similarity matrix used for SB rhythmic similarity * Pull out SB timbral similarity KL divergence into its own file
author cannam
date Fri, 18 Jan 2008 14:40:20 +0000
parents
children 499d438b52ba
rev   line source
cannam@31 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
cannam@31 2
cannam@31 3 /*
cannam@31 4 QM DSP Library
cannam@31 5
cannam@31 6 Centre for Digital Music, Queen Mary, University of London.
cannam@31 7 This file copyright 2008 QMUL
cannam@31 8 All rights reserved.
cannam@31 9 */
cannam@31 10
cannam@31 11 #ifndef KLDIVERGENCE_H
cannam@31 12 #define KLDIVERGENCE_H
cannam@31 13
cannam@31 14 #include <vector>
cannam@31 15
cannam@31 16 using std::vector;
cannam@31 17
cannam@31 18 /**
cannam@31 19 * Calculate a symmetrised Kullback-Leibler divergence of Gaussian
cannam@31 20 * models based on mean and variance vectors. All input vectors must
cannam@31 21 * be of equal size.
cannam@31 22 */
cannam@31 23
cannam@31 24 class KLDivergence
cannam@31 25 {
cannam@31 26 public:
cannam@31 27 KLDivergence() { }
cannam@31 28 ~KLDivergence() { }
cannam@31 29
cannam@31 30 double distance(const vector<double> &means1,
cannam@31 31 const vector<double> &variances1,
cannam@31 32 const vector<double> &means2,
cannam@31 33 const vector<double> &variances2);
cannam@31 34 };
cannam@31 35
cannam@31 36 #endif
cannam@31 37