Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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));
            }
        }
Beispiel #3
0
		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);
			}
		}
Beispiel #4
0
 /// <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);
 }