2013-03-27 80 views
1

是否有任何简单的方法来计算相同长度的2个数组上的某种距离函数以检查它们的差异?数组都是浮动的,每个bin都可以是空的或包含一个值。我这样做,因为我需要比较两个不同图像的两个颜色直方图。 谢谢C#排列距离函数

编辑:通过距离函数我的意思是像两个数组上的Levenshtein距离,所以我可以检查之间的'差异'。我希望根据计算的距离检查物体是否在图像中。

+2

定义“2个阵列之间的距离”。 – 2013-03-27 16:18:31

+0

希望帮助:) – Pawcu 2013-03-27 21:09:17

回答

1

结束了使用一个简单的for循环,通过迭代每一个元素:

private static float ArrayDistanceFunction(float[] array1, float[] array2) 
{ 
     float total = 0; 

     for (int i = 0; i < array1.Length; i++) 
     { 
      total += Math.Abs(array1[i] - array2[i]); 
     } 
     return total; 
} 

里德Copsey的答案确实有效,但不知何故它比我的实施表现得更慢

1

如果你只是想的各个值之间的差异的总和,你可以使用:

var distance = array1.Zip(array2, (a,b) => Math.Abs(a-b)).Sum(); 
+0

是的,这是帮助thx :) – Pawcu 2013-03-27 21:09:53

+0

测试它,它的工作原理,但是当它执行真的很慢...总而言之使用一个简单的循环。但仍thx人:) – Pawcu 2013-03-27 21:54:55