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. |
리턴 | ].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;
}