c@256: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ c@256: c@256: /* c@256: QM DSP Library c@256: c@256: Centre for Digital Music, Queen Mary, University of London. c@256: This file copyright 2008 QMUL c@256: All rights reserved. c@256: */ c@256: c@256: #include "KLDivergence.h" c@256: c@256: double KLDivergence::distance(const vector &m1, c@256: const vector &v1, c@256: const vector &m2, c@256: const vector &v2) c@256: { c@256: int sz = m1.size(); c@256: c@256: double d = -2.0 * sz; c@256: c@256: for (int k = 0; k < sz; ++k) { c@256: d += v1[k] / v2[k] + v2[k] / v1[k]; c@256: d += (m1[k] - m2[k]) * (1.0 / v1[k] + 1.0 / v2[k]) * (m1[k] - m2[k]); c@256: } c@256: c@256: d /= 2.0; c@256: c@256: return d; c@256: }