Mercurial > hg > match-vamp
changeset 133:af69db43f5a4 refactors
Distance metric tests
author | Chris Cannam |
---|---|
date | Thu, 11 Dec 2014 14:09:54 +0000 |
parents | afa078d87d2a |
children | 046f51a2ca25 |
files | .hgignore src/DistanceMetric.cpp test/TestDistanceMetric.cpp |
diffstat | 3 files changed, 27 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgignore Thu Dec 11 13:55:54 2014 +0000 +++ b/.hgignore Thu Dec 11 14:09:54 2014 +0000 @@ -5,3 +5,6 @@ *.so *.o *.orig +re:^test/TestDistanceMetric$ +re:^test/TestFeatureConditioner$ +re:^test/TestFeatureExtractor$
--- a/src/DistanceMetric.cpp Thu Dec 11 13:55:54 2014 +0000 +++ b/src/DistanceMetric.cpp Thu Dec 11 14:09:54 2014 +0000 @@ -18,8 +18,9 @@ #include <cassert> #include <cmath> +#include <iostream> -using std::vector; +using namespace std; double DistanceMetric::calcDistance(const vector<double> &f1, @@ -49,7 +50,7 @@ // double weight = (5 + Math.log(f1[freqMapSize] + f2[freqMapSize]))/10.0; double weight = (8 + log(sum)) / 10.0; - + if (weight < 0) weight = 0; else if (weight > 1) weight = 1;
--- a/test/TestDistanceMetric.cpp Thu Dec 11 13:55:54 2014 +0000 +++ b/test/TestDistanceMetric.cpp Thu Dec 11 14:09:54 2014 +0000 @@ -33,6 +33,27 @@ 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); +} + +BOOST_AUTO_TEST_CASE(sum) +{ + DistanceMetric dm(DistanceMetric::NormaliseDistanceToSum); + vector<double> + e1 = getTestFeature(1), + e2 = getTestFeature(2), + e0 = getTestFeature(0); + + BOOST_CHECK_EQUAL(dm.calcDistance(e0, e0), 0.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(e0, e2), 1.0); } BOOST_AUTO_TEST_SUITE_END()