Exemplo n.º 1
0
        public static double SignalToNoiseRatio(FunctionData first, FunctionData second)
        {
            var numerator = second.Points.Select(p => first.Function(first, p.X))
                            .Sum();
            var denominator = second.Points
                              .Select(p => Math.Pow(first.Function(first, p.X) - p.Y, 2)).Sum();

            return(10 * Math.Abs(Math.Log10(Math.Abs(numerator / denominator))));
        }
Exemplo n.º 2
0
        public static void GenerateSignal(FunctionData data)
        {
            data.Points.Clear();

            var interval = data.Duration.Value / (data.Samples.Value - 1);

            for (var i = 0; i < data.Samples.Value; i++)
            {
                var x = i * interval;
                try
                {
                    var y = data.Function(data, x);

                    if (Math.Abs(y) < 10E-10)
                    {
                        y = 0d;
                    }

                    data.Points.Add(new Point(x, y));
                }
                catch (DivideByZeroException)
                {
                    // Everything is fine, we just don't add this point
                }
            }

            data.Points.Sort(); // No idea why I put it here, seems not to have any influence, but better don't remove.

            data.CalculateParameters();
            data.PointsUpdate();
            Histogram.GetHistogram(data);
        }
Exemplo n.º 3
0
 public static double MaximumDifference(FunctionData first, FunctionData second)
 {
     return(second.Points
            .Select(p => Math.Abs(p.Y - first.Function(second, p.X))).Max());
 }
Exemplo n.º 4
0
 public static double MeanSquaredError(FunctionData first, FunctionData second)
 {
     return(second.Points
            .Select(p => Math.Pow(first.Function(first, p.X) - p.Y, 2)).Sum()
            / second.Points.Count);
 }