示例#1
0
        public static Gradient SeriesTransitionGradient(double[] data, int divisionsCount = 1)
        {
            ////////Gradient.divisionsCount = 20;

            ////double[] gradientValues = SegmentSeries(data, 2);
            ////double[] gradientValues = GetRollingAverage2(data);
            ////double[] gradientValues = CalculateGradientArray(GetRollingAverage(data));
            ////double[] gradientValues = CalculateGradientArray(data);

            ////double[] gradientValues = CalculateGradientArray(data);

            ////gradientValues = GetRollingAverage2(gradientValues);

            ////gradientValues = CalculateGradientArray(gradientValues);

            ////gradientValues = GetRollingAverage2(gradientValues);

            ////gradientValues = GetRollingAverage(data);

            ////gradientValues = ShiftTo0(gradientValues);

            ////gradientValues = SegmentSeries(gradientValues, divisionsCount);

            ////gradientValues = SegmentSeries(gradientValues, 5);

            ////double[] gradientValues = data;

            int i;

            for (i = 0; i < data.Length; i++)
            {
                data[i] = data[i] * data[i];
            }

            ////////gradientValues = Normalize(data, 1000000);


            /////////double[] gradientValues = (double []) data.Clone();

            double[] gradientValues = new double[data.Length];


            double total1 = 0, total2 = 0;


            int firstLength = (int)(data.Length * 4 / 10);

            int secondLength = data.Length - firstLength - 1;


            for (i = 0; i < firstLength; i++)
            {
                total1 += data[i];
            }

            total1 /= firstLength;

            for (; i < data.Length - 1; i++)
            {
                total2 += data[i];
            }

            total2 /= secondLength;

            double percentageIncrease = Math.Round(total2 / total1 * 100, 2);

            for (i = 0; i < firstLength; i++)
            {
                gradientValues[i] = total1;
                ////gradientValues[i] = 100;
            }

            for (; i < data.Length; i++)
            {
                gradientValues[i] = total2;
                ////gradientValues[i] = percentageIncrease;
            }

            ////gradientValues = (double []) data.Clone();


            /*////
             * gradientValues = GetRollingAverage2(gradientValues);
             *
             * gradientValues = GetRollingAverage2(gradientValues);
             *
             * gradientValues = CalculateGradientArray(gradientValues);
             * gradientValues = CalculateGradientArray(gradientValues);
             */



            /*////gradientValues = SegmentSeries(gradientValues, divisionsCount);
             *
             * gradientValues = CalculateGradientArray(gradientValues);
             *
             *
             * gradientValues = SegmentSeries(gradientValues, divisionsCount);
             *
             * gradientValues = CalculateGradientArray(gradientValues);
             *
             *
             * gradientValues = SegmentSeries(gradientValues, divisionsCount);
             */



            Gradient gradient = new Gradient(0, 1, gradientValues);

            gradient.strength = percentageIncrease;

            return(gradient);
        }
示例#2
0
        public TransitionGradient(long frequency, long index, double strength, long transitions, Gradient gradient, long rangeWidth = 1, long startFrequency = -1, long endFrequency = -1)
        {
            this.index       = index;
            this.frequency   = frequency;
            this.strength    = strength;
            this.transitions = transitions;
            this.gradient    = gradient;

            this.rangeWidth = rangeWidth;

            this.startFrequency = startFrequency;
            this.endFrequency   = endFrequency;
        }