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); }
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); }
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)); }
/// <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>(); }
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)); }
/// <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); } }
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); }