changeset 595:3b1f2aa8d36b

Euclidean distance
author Chris Cannam
date Wed, 03 Dec 2014 19:19:49 +0000
parents 495cc8973458
children 5bbd6ce6e3ee
files src/may/bits/VectorBits.java src/may/vector.yeti
diffstat 2 files changed, 15 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/may/bits/VectorBits.java	Wed Dec 03 19:15:51 2014 +0000
+++ b/src/may/bits/VectorBits.java	Wed Dec 03 19:19:49 2014 +0000
@@ -58,5 +58,15 @@
 	}
 	return out;
     }
+    
+    public static double euclideanDistance(double[] v1, double[] v2) {
+	checkLengths(v1, v2);
+	double sum = 0.0;
+	for (int i = 0; i < v1.length; ++i) {
+	    double d = v1[i] - v2[i];
+	    sum += d * d;
+	}
+	return Math.sqrt(sum);
+    }
 }
 
--- a/src/may/vector.yeti	Wed Dec 03 19:15:51 2014 +0000
+++ b/src/may/vector.yeti	Wed Dec 03 19:19:49 2014 +0000
@@ -292,6 +292,9 @@
         v;
     fi);
 
+euclideanDistance v1 v2 is ~double[] -> ~double[] -> number =
+    VectorBits#euclideanDistance(v1, v2);
+
 zipped vv is list?<~double[]> -> ~double[] =
     case vv of
     [v]: v;
@@ -366,6 +369,7 @@
     maxindex,
     minindex,
     unityNormalised,
+    euclideanDistance,
     zipped,
     unzipped,
 } as {
@@ -411,6 +415,7 @@
     maxindex is vector_t -> number,
     minindex is vector_t -> number,
     unityNormalised is vector_t -> vector_t,
+    euclideanDistance is vector_t -> vector_t -> number,
     zipped is list?<vector_t> -> vector_t,
     unzipped is number -> vector_t -> array<vector_t>,
 }