public static Matrix Covariance(Matrix source, VectorType t = VectorType.Col)
{
int length = t == VectorType.Row ? source.Rows : source.Cols;
Matrix m = new Matrix(length);
//for (int i = 0; i < length; i++)
for (int i = 0; i < length; i++)
{
//for (int j = i; j < length; j++) // symmetric matrix
for (int j = i; j < length; j++)
m[i, j] = m[j, i] = source[i, t].Covariance(source[j, t]);
}
return m;
}