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