YAMP.YMath.Covariance C# (CSharp) Method

Covariance() public static method

public static Covariance ( MatrixValue M ) : MatrixValue
M MatrixValue
return MatrixValue
        public static MatrixValue Covariance(MatrixValue M)
        {
            if (M.Length == 0)
            {
                return new MatrixValue();
            }

            if (M.IsVector)
            {
                return new MatrixValue(1, 1, Variance(M) as ScalarValue);
            }

            var avg = Average(M) as MatrixValue;
            var scale = 1.0;
            var s = new MatrixValue(M.DimensionX, M.DimensionX);

            for (var i = 1; i <= M.DimensionY; i++)
            {
                for (var j = 1; j <= M.DimensionX; j++)
                {
                    for (var k = 1; k <= M.DimensionX; k++)
                    {
                        s[k, j] += (M[i, j] - avg[j]) * (M[i, k] - avg[k]);
                    }
                }
            }

            scale /= M.DimensionY;

            for (var i = 1; i <= s.DimensionY; i++)
            {
                for (var j = 1; j <= s.DimensionX; j++)
                {
                    s[i, j] *= scale;
                }
            }

            return s;
        }

Usage Example

Exemplo n.º 1
0
 public MatrixValue Function(MatrixValue M)
 {
     return(YMath.Covariance(M));
 }