コード例 #1
0
        public void FitTest7()
        {
            UnivariateDiscreteDistribution target = CreateUnivariateDiscreteDistribution();

            double[] observations = { 0, 1, 1, 1, 1 };
            double[] weights      = { 0.125, 0.125, 0.25, 0.25, 0.25 };
            target.Fit(observations, weights);

            double mean = Measures.WeightedMean(observations, weights);

            Assert.AreEqual(mean, target.Mean);
        }
コード例 #2
0
        public void FitTest4()
        {
            UnivariateDiscreteDistribution target = CreateUnivariateDiscreteDistribution();

            double[]        observations = { 0, 1, 1, 1, 1 };
            IFittingOptions options      = null;

            target.Fit(observations, options);

            double mean = Accord.Statistics.Tools.Mean(observations);

            Assert.AreEqual(mean, target.Mean);
        }
コード例 #3
0
        public void LogProbabilityMassFunctionTest()
        {
            UnivariateDiscreteDistribution target = CreateUnivariateDiscreteDistribution();

            double p = 0.42;
            double q = 1 - p;

            double lnp = System.Math.Log(p);
            double lnq = System.Math.Log(q);

            Assert.AreEqual(lnq, target.LogProbabilityMassFunction(0));
            Assert.AreEqual(lnp, target.LogProbabilityMassFunction(1));
        }
コード例 #4
0
        /// <summary>
        /// Construct a new Vehicle object from its initial state.
        /// </summary>
        /// <param name="initial">Initial pose.</param>
        /// <param name="landmarks">Landmark 3d locations against which the measurements are performed.</param>
        /// <param name="measurer">Measuring config and methods.</param>
        public SimulatedVehicle(PoseT initial, List <double[]> landmarks, MeasurerT measurer)
            : base(initial, measurer)
        {
            ClutterCount = ClutterDensity * measurer.Volume();

            if (ClutterCount > 0)
            {
                clutterGen = new PoissonDistribution(ClutterCount);
            }
            else
            {
                clutterGen = new DegenerateDistribution(0);
            }

            Landmarks = landmarks;

            HasDataAssociation = true;
            DataAssociation    = new List <int>();
        }
コード例 #5
0
        public void ProbabilityMassFunctionTest()
        {
            UnivariateDiscreteDistribution target = CreateUnivariateDiscreteDistribution();

            double p = 0.42;
            double q = 1 - p;

            Assert.AreEqual(q, target.ProbabilityMassFunction(0));
            Assert.AreEqual(p, target.ProbabilityMassFunction(1));

            double[] observations = { 0, 1, 0, 0, 1, 0 };

            target.Fit(observations);

            p = target.Mean;
            q = 1 - p;

            Assert.AreEqual(q, target.ProbabilityMassFunction(0));
            Assert.AreEqual(p, target.ProbabilityMassFunction(1));
        }
コード例 #6
0
        /// <summary>
        /// Perform a deep copy of another general vehicle,
        /// scaling the covariance matrices and setting a new detection probability.
        /// </summary>
        /// <param name="that">Copied vehicle.</param>
        /// <param name="motioncovmultiplier">Scalar multiplier for the motion covariance matrix.</param>
        /// <param name="measurecovmultiplier">Scalar multiplier for the measurement covariance matrix.</param>
        /// <param name="pdetection">Probability of detection.</param>
        /// <param name="clutter">Clutter density.</param>
        /// <param name="copytrajectory">If true, the vehicle historic trajectory is copied. Relatively heavy operation.</param>
        public SimulatedVehicle(Vehicle <MeasurerT, PoseT, MeasurementT> that,
                                double motioncovmultiplier, double measurecovmultiplier,
                                double pdetection, double clutter, bool copytrajectory = false)
            : base(that, copytrajectory)
        {
            this.detectionProbability  = pdetection;
            this.ClutterDensity        = clutter;
            this.ClutterCount          = this.ClutterDensity * this.Measurer.Volume();
            this.motionCovariance      = motioncovmultiplier.Multiply(that.MotionCovariance);
            this.MeasurementCovariance = measurecovmultiplier.Multiply(that.MeasurementCovariance);

            if (this.ClutterCount > 0)
            {
                this.clutterGen = new PoissonDistribution(this.ClutterCount);
            }
            else
            {
                this.clutterGen = new DegenerateDistribution(0);
            }
        }
コード例 #7
0
        public void EntropyTest()
        {
            UnivariateDiscreteDistribution target = CreateUnivariateDiscreteDistribution();

            double q = 0.42;
            double p = 1 - q;

            double actual   = target.Entropy;
            double expected = -q *System.Math.Log(q) - p * System.Math.Log(p);

            Assert.AreEqual(expected, actual);


            target.Fit(new double[] { 0, 1, 0, 0, 1, 0 });

            q = target.Mean;
            p = 1 - q;

            actual   = target.Entropy;
            expected = -q *System.Math.Log(q) - p * System.Math.Log(p);

            Assert.AreEqual(expected, actual);
        }