Accord.Statistics.Tools.RandomCovariance C# (CSharp) Method

RandomCovariance() public static method

Generates a random Measures.Covariance(double[], double[], bool) matrix.
public static RandomCovariance ( int size, double minValue, double maxValue ) : ].double[
size int The size of the square matrix.
minValue double The minimum value for a diagonal element.
maxValue double The maximum size for a diagonal element.
return ].double[
        public static double[,] RandomCovariance(int size, double minValue, double maxValue)
        {
            double[,] A = Accord.Math.Matrix.Random(size, minValue, maxValue, symmetric: true);

            var gso = new GramSchmidtOrthogonalization(A);
            double[,] Q = gso.OrthogonalFactor;

            double[] diagonal = Vector.Random(size, minValue, maxValue).Abs();
            double[,] psd = Matrix.Dot(Q.TransposeAndDotWithDiagonal(diagonal), Q);

            Accord.Diagnostics.Debug.Assert(psd.IsPositiveDefinite());

            return psd;
        }