比较三个对角线阵列,找出哪两个最相似

时间:2016-04-24 03:34:07

标签: c# arrays statistics similarity

我有三个对角线阵列A,B,C都是double,大小为508X508。主对角线以上的所有值都是非零,而其他每个单元格都保持为零。

{1}}中的数据均在第1天和第2天从传感器收集。同时,最佳数据存储在A and B

我的问题是如何找到哪个数组C更类似于A,B ???

实现这一目标的最佳统计方法是什么,如果可能的话可能是C#代码快照?

1 个答案:

答案 0 :(得分:1)

我认为科拉克指出了正确的方法。只需选择距离度量,计算每个矩阵的总距离。

尝试这样的事情

    public double ComputeArrayDistance(double[,] firstArray, double[,] secondArray)
    {
        // some quick and dirty guardClauses to prevent hedaches 
        if (firstArray.GetLength(0) != firstArray.GetLength(1)) throw new ArgumentException("the first array is not squared ..");
        if (secondArray.GetLength(0) != secondArray.GetLength(1)) throw new ArgumentException("the second array is not squared ..");
        if (firstArray.GetLength(0) != secondArray.GetLength(0)) throw new ArgumentException("the size of two array don't match");

        double totalDistance = 0; 

        // if the array(matrix) is lower triangular
        for(int i = 0; i < firstArray.GetLength(0); i++)
        {
            for(int j = 0; j <= i; j++ )
            {
                totalDistance += this.GetDistance(firstArray[i, j], secondArray[i, j]);
            }
        }

        return totalDistance;
    }

    private double GetDistance(double elemOne, double elemTwo)
    {
        // an acceptable measure should be the square of the difference  
        return Math.Pow((elemOne - elemTwo), 2);
    }