public static Matrix IncreaseDimensions(Matrix x, int polynomialFeatures)
{
Matrix Xtemp = x.Copy();
int maxCols = Xtemp.Cols;
for (int j = 0; j < maxCols - 1; j++)
{
for (int k = 0; k <= polynomialFeatures; k++)
{
for (int m = 0; m <= k; m++)
{
Vector v = (Xtemp[j, VectorType.Col].ToVector() ^ (double)(k - m)) * (Xtemp[j + 1, VectorType.Col] ^ (double)m).ToVector();
Xtemp = Xtemp.Insert(v, Xtemp.Cols - 1, VectorType.Col);
}
}
}
return Xtemp;
}