public override void Initialize(INumberTable numberTable) { var m = numberTable.Matrix; for (int i = 0; i < numberTable.Rows; i++) { double mean = 0; for (int j = 0; j < numberTable.Columns; j++) { mean += m[i][j]; } mean /= numberTable.Columns; for (int j = 0; j < numberTable.Columns; j++) { m[i][j] -= mean; } } // Estimates the maximal variance. maxVariance = 0; Random rg = new System.Random(); for (int n = 0; n < 500; n++) { int i = rg.Next() % numberTable.Rows; int j = rg.Next() % numberTable.Rows; for (int k = 0; k < numberTable.Columns; k++) { maxVariance = Math.Max(maxVariance, Math.Abs(m[i][k] * m[j][k])); } } }
public override void Initialize(VisuMap.Script.INumberTable numberTable) { normalizeFactor = 1e-10; for (int k = 0; k < 1000; k++) { var a = numberTable.Matrix[k * 2903 % numberTable.Rows]; var b = numberTable.Matrix[k * 5231 % numberTable.Rows]; double d = 0; for (int j = 0; j < numberTable.Columns; j++) { double diff = a[j] - b[j]; d += diff * diff; } normalizeFactor = Math.Max(normalizeFactor, d); } }