comparison src/FeatureConditioner.cpp @ 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 593054bf6476
children 8e240bbea845
comparison
equal deleted inserted replaced
114:dc9cc3278636 116:eed5f9594268
35 int size = feature.size(); 35 int size = feature.size();
36 36
37 vector<double> out(size, 0.0); 37 vector<double> out(size, 0.0);
38 38
39 double totalEnergy = 0; 39 double totalEnergy = 0;
40 if (m_params.order == OutputRectifiedDerivative) { 40
41 switch (m_params.order) {
42
43 case OutputRectifiedDerivative:
41 for (int i = 0; i < size; i++) { 44 for (int i = 0; i < size; i++) {
42 totalEnergy += feature[i]; 45 totalEnergy += feature[i];
43 if (feature[i] > m_prev[i]) { 46 if (feature[i] > m_prev[i]) {
44 out[i] = feature[i] - m_prev[i]; 47 out[i] = feature[i] - m_prev[i];
45 } else { 48 } else {
46 out[i] = 0; 49 out[i] = 0;
47 } 50 }
48 } 51 }
49 } else { 52 break;
53
54 case OutputDerivative:
50 for (int i = 0; i < size; i++) { 55 for (int i = 0; i < size; i++) {
56 totalEnergy += feature[i];
57 out[i] = feature[i] - m_prev[i];
58 }
59 break;
60
61 case OutputFeatures:
62 for (int i = 0; i < size; i++) {
63 totalEnergy += feature[i];
51 out[i] = feature[i]; 64 out[i] = feature[i];
52 totalEnergy += out[i];
53 } 65 }
66 break;
54 } 67 }
55 68
56 if (m_ltAverage == 0) { 69 if (m_ltAverage == 0) {
57 m_ltAverage = totalEnergy; 70 m_ltAverage = totalEnergy;
58 } else { 71 } else {