changeset 116:eed5f9594268 refactors

Add OutputDerivative, for completeness, & make DistanceMetric cope with negative feature values
author Chris Cannam
date Fri, 05 Dec 2014 10:05:31 +0000
parents dc9cc3278636
children aef4b62069ba 3792bcd34470
files src/DistanceMetric.cpp src/FeatureConditioner.cpp src/FeatureConditioner.h
diffstat 3 files changed, 23 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/DistanceMetric.cpp	Thu Dec 04 16:51:13 2014 +0000
+++ b/src/DistanceMetric.cpp	Fri Dec 05 10:05:31 2014 +0000
@@ -32,10 +32,8 @@
     assert(int(f2.size()) == featureSize);
     
     for (int i = 0; i < featureSize; i++) {
-        assert(f1[i] >= 0);
-        assert(f2[i] >= 0);
         d += fabs(f1[i] - f2[i]);
-        sum += f1[i] + f2[i];
+        sum += fabs(f1[i]) + fabs(f2[i]);
     }
 
     if (sum == 0)
--- a/src/FeatureConditioner.cpp	Thu Dec 04 16:51:13 2014 +0000
+++ b/src/FeatureConditioner.cpp	Fri Dec 05 10:05:31 2014 +0000
@@ -37,7 +37,10 @@
     vector<double> out(size, 0.0);
 
     double totalEnergy = 0;
-    if (m_params.order == OutputRectifiedDerivative) {
+
+    switch (m_params.order) {
+
+    case OutputRectifiedDerivative:
         for (int i = 0; i < size; i++) {
             totalEnergy += feature[i];
             if (feature[i] > m_prev[i]) {
@@ -46,11 +49,21 @@
                 out[i] = 0;
             }
         }
-    } else {
+        break;
+
+    case OutputDerivative:
         for (int i = 0; i < size; i++) {
+            totalEnergy += feature[i];
+            out[i] = feature[i] - m_prev[i];
+        }
+        break;
+        
+    case OutputFeatures:
+        for (int i = 0; i < size; i++) {
+            totalEnergy += feature[i];
             out[i] = feature[i];
-            totalEnergy += out[i];
         }
+        break;
     }
 
     if (m_ltAverage == 0) {
--- a/src/FeatureConditioner.h	Thu Dec 04 16:51:13 2014 +0000
+++ b/src/FeatureConditioner.h	Fri Dec 05 10:05:31 2014 +0000
@@ -48,9 +48,13 @@
 	OutputFeatures,
 
 	/** Output the half-wave rectified difference between the
-	 * previous and current features instead of the straight
-	 * feature values. */
+	 *  previous and current features instead of the straight
+	 *  feature values. */
 	OutputRectifiedDerivative,
+
+	/** Output the difference between the previous and current
+	 *  features instead of the straight feature values. */
+	OutputDerivative,
     };
 
     struct Parameters {