Mercurial > hg > match-vamp
changeset 149:b990fa45cb1f refactors
Merge from branch "noise"
author | Chris Cannam |
---|---|
date | Thu, 22 Jan 2015 17:20:11 +0000 |
parents | 254e16f831ee (current diff) 214b72d55796 (diff) |
children | b79151bb75af |
files | |
diffstat | 2 files changed, 19 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/src/DistanceMetric.cpp Fri Jan 16 10:28:29 2015 +0000 +++ b/src/DistanceMetric.cpp Thu Jan 22 17:20:11 2015 +0000 @@ -38,21 +38,20 @@ const vector<double> &f2) { double d = 0; - double sum1 = 0; - double sum2 = 0; double sum = 0; int featureSize = f1.size(); assert(int(f2.size()) == featureSize); - + for (int i = 0; i < featureSize; i++) { d += fabs(f1[i] - f2[i]); - sum1 += fabs(f1[i]); - sum2 += fabs(f2[i]); + sum += fabs(f1[i]) + fabs(f2[i]); } - sum = sum1 + sum2; - + double noise = 1e-3 * featureSize; + d += noise; + sum += noise; + if (sum == 0) { return 0; }
--- a/test/TestDistanceMetric.cpp Fri Jan 16 10:28:29 2015 +0000 +++ b/test/TestDistanceMetric.cpp Thu Jan 22 17:20:11 2015 +0000 @@ -34,12 +34,14 @@ e2 = getTestFeature(2), e0 = getTestFeature(0); - BOOST_CHECK_EQUAL(dm.calcDistance(e0, e0), 0.0); - BOOST_CHECK_EQUAL(dm.calcDistance(e1, e0), 6.0); - BOOST_CHECK_EQUAL(dm.calcDistance(e0, e1), 6.0); - BOOST_CHECK_EQUAL(dm.calcDistance(e1, e1), 0.0); - BOOST_CHECK_EQUAL(dm.calcDistance(e1, e2), 6.0); - BOOST_CHECK_EQUAL(dm.calcDistance(e0, e2), 12.0); + double noise = 1e-3 * 4; + + BOOST_CHECK_EQUAL(dm.calcDistance(e0, e0), 0.0 + noise); + BOOST_CHECK_EQUAL(dm.calcDistance(e1, e0), 6.0 + noise); + BOOST_CHECK_EQUAL(dm.calcDistance(e0, e1), 6.0 + noise); + BOOST_CHECK_EQUAL(dm.calcDistance(e1, e1), 0.0 + noise); + BOOST_CHECK_EQUAL(dm.calcDistance(e1, e2), 6.0 + noise); + BOOST_CHECK_EQUAL(dm.calcDistance(e0, e2), 12.0 + noise); } BOOST_AUTO_TEST_CASE(sum) @@ -52,11 +54,13 @@ e2 = getTestFeature(2), e0 = getTestFeature(0); - BOOST_CHECK_EQUAL(dm.calcDistance(e0, e0), 0.0); + double noise = 1e-3 * 4; + + BOOST_CHECK_EQUAL(dm.calcDistance(e0, e0), 1.0); BOOST_CHECK_EQUAL(dm.calcDistance(e1, e0), 1.0); BOOST_CHECK_EQUAL(dm.calcDistance(e0, e1), 1.0); - BOOST_CHECK_EQUAL(dm.calcDistance(e1, e1), 0.0); - BOOST_CHECK_EQUAL(dm.calcDistance(e1, e2), 1.0/3.0); + BOOST_CHECK_EQUAL(dm.calcDistance(e1, e1), noise / (12.0 + noise)); + BOOST_CHECK_EQUAL(dm.calcDistance(e1, e2), (6.0 + noise) / (18.0 + noise)); BOOST_CHECK_EQUAL(dm.calcDistance(e0, e2), 1.0); }