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