public void Normalize(IList <Vector> data) { if (data.Count == 0) { return; } VectorMeanVarianceAccumulator acc = new VectorMeanVarianceAccumulator(data[0].Count); foreach (Vector v in data) { acc.Add(v); } Vector mean = acc.Mean; Vector variance = acc.Variance.Diagonal(); Vector stddev = Vector.Zero(variance.Count); stddev.SetToFunction(variance, Math.Sqrt); for (int i = 0; i < stddev.Count; i++) { if (stddev[i] == 0.0) { mean[i] = 0.0; stddev[i] = 1.0; } } foreach (Vector v in data) { v.SetToDifference(v, mean); v.SetToRatio(v, stddev); } }
public void RandNormalP() { double[] m_init = { 1, 2, 3 }; Vector mt = Vector.FromArray(m_init); double[,] v_init = { { 2, 1, 1 }, { 1, 2, 1 }, { 1, 1, 2 } }; PositiveDefiniteMatrix vt = new PositiveDefiniteMatrix(v_init); PositiveDefiniteMatrix pt = ((PositiveDefiniteMatrix)vt.Clone()).SetToInverse(vt); int d = mt.Count; Vector x = Vector.Zero(d); VectorMeanVarianceAccumulator mva = new VectorMeanVarianceAccumulator(d); for (int i = 0; i < nsamples; i++) { Rand.NormalP(mt, pt, x); mva.Add(x); } Vector m = mva.Mean; PositiveDefiniteMatrix v = mva.Variance; Console.WriteLine(""); Console.WriteLine("Multivariate NormalP"); Console.WriteLine("--------------------"); Console.WriteLine("m = {0}", m); double dError = m.MaxDiff(mt); if (dError > TOLERANCE) { Assert.True(false, String.Format("m: error = {0}", dError)); } Console.WriteLine("v = \n{0}", v); dError = v.MaxDiff(vt); if (dError > TOLERANCE) { Assert.True(false, String.Format("v: error = {0}", dError)); } }
public void Normalize(IList<Vector> data) { if (data.Count == 0) return; VectorMeanVarianceAccumulator acc = new VectorMeanVarianceAccumulator(data[0].Count); foreach (Vector v in data) { acc.Add(v); } Vector mean = acc.Mean; Vector variance = acc.Variance.Diagonal(); Vector stddev = Vector.Zero(variance.Count); stddev.SetToFunction(variance, Math.Sqrt); for (int i = 0; i < stddev.Count; i++) { if (stddev[i] == 0.0) { mean[i] = 0.0; stddev[i] = 1.0; } } foreach (Vector v in data) { v.SetToDifference(v, mean); v.SetToRatio(v, stddev); } }
/// <summary> /// Creates a new VectorGaussian estimator of a given dimension /// </summary> /// <param name="dimension">The dimension</param> public VectorGaussianEstimator(int dimension) { x = Vector.Zero(dimension); noiseVariance = new PositiveDefiniteMatrix(dimension, dimension); mva = new VectorMeanVarianceAccumulator(dimension); }