comparison maths/KLDivergence.cpp @ 74:769da847732b

* A few fixes prompted by vamp-plugin-tester
author cannam
date Mon, 08 Jun 2009 12:30:20 +0000
parents 499d438b52ba
children e5907ae6de17
comparison
equal deleted inserted replaced
73:dcb555b90924 74:769da847732b
18 const vector<double> &v2) 18 const vector<double> &v2)
19 { 19 {
20 int sz = m1.size(); 20 int sz = m1.size();
21 21
22 double d = -2.0 * sz; 22 double d = -2.0 * sz;
23 double small = 1e-20;
23 24
24 for (int k = 0; k < sz; ++k) { 25 for (int k = 0; k < sz; ++k) {
25 d += v1[k] / v2[k] + v2[k] / v1[k]; 26
26 d += (m1[k] - m2[k]) * (1.0 / v1[k] + 1.0 / v2[k]) * (m1[k] - m2[k]); 27 double kv1 = v1[k] + small;
28 double kv2 = v2[k] + small;
29 double km = (m1[k] - m2[k]) + small;
30
31 d += kv1 / kv2 + kv2 / kv1;
32 d += km * (1.0 / kv1 + 1.0 / kv2) * km;
27 } 33 }
28 34
29 d /= 2.0; 35 d /= 2.0;
30 36
31 return d; 37 return d;