changeset 150:b79151bb75af refactors

Make noise a parameter in DistanceMetric (though not exposed in plugin etc yet)
author Chris Cannam
date Thu, 22 Jan 2015 17:25:24 +0000
parents b990fa45cb1f
children 246de093f0f1
files src/DistanceMetric.cpp src/DistanceMetric.h
diffstat 2 files changed, 17 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/DistanceMetric.cpp	Thu Jan 22 17:20:11 2015 +0000
+++ b/src/DistanceMetric.cpp	Thu Jan 22 17:25:24 2015 +0000
@@ -49,8 +49,10 @@
     }
 
     double noise = 1e-3 * featureSize;
-    d += noise;
-    sum += noise;
+    if (m_params.noise == AddNoise) {
+        d += noise;
+        sum += noise;
+    }
     
     if (sum == 0) {
         return 0;
--- a/src/DistanceMetric.h	Thu Jan 22 17:20:11 2015 +0000
+++ b/src/DistanceMetric.h	Thu Jan 22 17:25:24 2015 +0000
@@ -36,14 +36,26 @@
         NormaliseDistanceToLogSum,
     };
 
+    enum NoiseAddition {
+
+        /** Don't add noise. */
+        NoNoise,
+
+        /** Add a constant noise term. This can help avoid
+         *  mis-tracking when one file contains a lot of silence. */
+        AddNoise,
+    };
+    
     struct Parameters {
 
         Parameters() :
-            norm(NormaliseDistanceToLogSum)
+            norm(NormaliseDistanceToLogSum),
+            noise(AddNoise)
         {}
 
         /** Normalisation for distance metrics. */
         DistanceNormalisation norm;
+        NoiseAddition noise;
     };
     
     DistanceMetric(Parameters params);