# HG changeset patch # User Chris Cannam # Date 1418306994 0 # Node ID af69db43f5a49eda2a503a8ca92cf7330b0206b6 # Parent afa078d87d2a1a41479faaa8f1df6aed8bbb97ec Distance metric tests diff -r afa078d87d2a -r af69db43f5a4 .hgignore --- 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$ diff -r afa078d87d2a -r af69db43f5a4 src/DistanceMetric.cpp --- 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 #include +#include -using std::vector; +using namespace std; double DistanceMetric::calcDistance(const vector &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; diff -r afa078d87d2a -r af69db43f5a4 test/TestDistanceMetric.cpp --- 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 + 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()