Ejemplo n.º 1
0
        public void ShouldDecreaseSigma()
        {
            var slopes = new double[]
            {
                Photometry2.SigmaSlopeFromDerivative(381.640843293, 1, 6, 3.0, 1500),
                Photometry2.SigmaSlopeFromDerivative(381.640843293, 1, 6, 3.022, 1500),
                Photometry2.SigmaSlopeFromDerivative(381.640843293, 1, 6, 3.2, 1500)
            };

            var residuals = new double[]
            {
                Photometry2.GetResidualFromEstimate(381.640843293, 1, 6, 3.022, 1500)
            };
        }
Ejemplo n.º 2
0
        public static double[] GradientTowardsMinimalErrorForGaussian(double peak, double sigma, ushort[] samples, double center, GaussianFitOptions2 options)
        {
            var vec  = new double[2];
            var used = 0;

            for (var x = 0; x < samples.Length; x++)
            {
                var distance = (x - center);

                if (distance <= 5)
                {
                    continue;
                }

                var distanceSquared = distance * distance;

                var sample = samples[x];

                var sChange = Photometry2.SigmaSlopeFromDerivative((double)sample, (double)x, center, sigma, peak);
                var pChange = Photometry2.PeakSlopeFromDerivative((double)sample, (double)x, center, sigma, peak);

                if (double.IsPositiveInfinity(sChange) || double.IsNegativeInfinity(sChange))
                {
                    throw new ArgumentException();
                }

                if (double.IsPositiveInfinity(pChange) || double.IsNegativeInfinity(pChange))
                {
                    throw new ArgumentException();
                }

                vec[0] += (1 * sChange);
                vec[1] += (1 * pChange);

                used++;
            }

            vec[0] /= used;
            vec[1] /= used;

            return(vec);
        }