Mercurial > hg > match-vamp
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 {