21 const vector<double> &v1,
22 const vector<double> &m2,
23 const vector<double> &v2)
30 for (
int k = 0; k < sz; ++k) {
32 double kv1 = v1[k] + small;
33 double kv2 = v2[k] + small;
34 double km = (m1[k] - m2[k]) + small;
36 d += kv1 / kv2 + kv2 / kv1;
37 d += km * (1.0 / kv1 + 1.0 / kv2) * km;
46 const vector<double> &d2,
54 for (
int i = 0; i < sz; ++i) {
55 d += d1[i] * log10((d1[i] + small) / (d2[i] + small));
double distanceDistribution(const vector< double > &d1, const vector< double > &d2, bool symmetrised)
Calculate a Kullback-Leibler divergence of two probability distributions.
double distanceGaussian(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 vec...