comparison src/DistanceMetric.cpp @ 157:d6c1556fadd0 refactors

Default is actually Manhattan, not Euclidean (it just looks like squared-Euclidean for energy vectors). Add Euclidean as another alternative.
author Chris Cannam
date Thu, 29 Jan 2015 10:55:24 +0000
parents d6df9fe7b12f
children d1bc89794cd4
comparison
equal deleted inserted replaced
156:d6df9fe7b12f 157:d6c1556fadd0
60 d += 1e-2; 60 d += 1e-2;
61 } 61 }
62 if (d > 1.0) d = 1.0; 62 if (d > 1.0) d = 1.0;
63 63
64 return d; // normalisation param ignored 64 return d; // normalisation param ignored
65
65 } 66 }
66 67
67 // Euclidean 68 if (m_params.metric == Manhattan) {
68 69 for (int i = 0; i < featureSize; i++) {
69 for (int i = 0; i < featureSize; i++) { 70 d += fabs(f1[i] - f2[i]);
70 d += fabs(f1[i] - f2[i]); 71 sum += fabs(f1[i]) + fabs(f2[i]);
71 sum += fabs(f1[i]) + fabs(f2[i]); 72 }
73 } else {
74 // Euclidean
75 for (int i = 0; i < featureSize; i++) {
76 d += (f1[i] - f2[i]) * (f1[i] - f2[i]);
77 sum += fabs(f1[i]) + fabs(f2[i]);
78 }
79 d = sqrt(d);
72 } 80 }
73 81
74 double noise = 1e-3 * featureSize; 82 double noise = 1e-3 * featureSize;
75 if (m_params.noise == AddNoise) { 83 if (m_params.noise == AddNoise) {
76 d += noise; 84 d += noise;