1

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

编辑:通过距离函数,我的意思是两个阵列上的 Levenshtein 距离,所以我可以检查两者之间的“差异”。我希望根据计算的距离检查对象是否在图像中。

4

2 回答 2

1

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

var distance = array1.Zip(array2, (a,b) => Math.Abs(a-b)).Sum();
于 2013-03-27T16:19:44.847 回答
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;
}

Reed Copsey 的回答确实有效,但不知何故它的表现比我的实现慢

于 2013-03-27T21:57:38.257 回答