예제 #1
0
        public TransitionGradientArray GetStrongestTransitionsGradientFrequency()
        {
            TransitionGradientArray transitionGradientArray = new TransitionGradientArray();

            if (bufferFramesArray.Count > 0)
            {
                Gradient gradient, maxGradient;

                double maxGradientStrength = Double.NaN, gradientStrength;

                int maxIndex = -1;

                double[] transitionsStrengthArray;

                TransitionGradient strongestTransitionGradient;

                ////long inc = (long) (FREQUENCY_SEGMENT_SIZE / mainForm.binSize);

                long inc = (long)(10000 / mainForm.binSize);

                long segmentEnd;

                for (long i = 0; i < bufferFramesArray[0].bufferArray.Length; i += inc)
                {
                    maxGradient         = null;
                    maxGradientStrength = Double.NaN;
                    maxIndex            = -1;

                    segmentEnd = i + inc;

                    for (long j = i; j < segmentEnd && j < bufferFramesArray[0].bufferArray.Length; j++)
                    {
                        transitionsStrengthArray = GetAveragedStrengthOverTimeForIndex(j);
                        ////transitionsStrengthArray = GetStrengthOverTimeForIndex(j);

                        gradient = SignalDataUtilities.SeriesTransitionGradient(transitionsStrengthArray, Gradient.divisionsCount);

                        gradientStrength = gradient.CalculateTransitionGradient();

                        ////gradientStrength = gradient.strength;

                        ////gradientStrength = SignalDataUtilities.Series2ndVS1stHalfAvgStrength(transitionsStrengthArray) * transitions;

                        if (Double.IsNaN(maxGradientStrength) || gradientStrength > maxGradientStrength)
                        {
                            maxGradient = gradient;

                            maxGradientStrength = gradientStrength;

                            maxIndex = (int)j;
                        }
                    }

                    strongestTransitionGradient = new TransitionGradient(Utilities.GetFrequencyFromIndex((long)(maxIndex), parent.lowerFrequency, mainForm.binSize), maxIndex, maxGradientStrength, this.transitions, maxGradient);
                    transitionGradientArray.Add(strongestTransitionGradient);
                }
            }

            return(transitionGradientArray);
        }
예제 #2
0
        public long Add(TransitionGradient transitionGradient)
        {
            if (transitionGradient != null)
            {
                array.Add(transitionGradient);
            }

            return(array.Count);
        }
예제 #3
0
        public TransitionGradient GetTransitionsGradient()
        {
            if (bufferFramesArray.Count > 0)
            {
                Gradient gradient;

                double[] transitionsStrengthArray;

                TransitionGradient transitionGradient;

                transitionsStrengthArray = GetAveragedStrengthOverTimeForRange(0, bufferFramesArray[0].bufferArray.Length);
                gradient = SignalDataUtilities.SeriesTransitionGradient(transitionsStrengthArray, Gradient.divisionsCount);

                double gradientStrength = gradient.CalculateTransitionGradient();

                long index = bufferFramesArray[0].bufferArray.Length / 2;

                long frequency = Utilities.GetFrequencyFromIndex((long)(index), parent.lowerFrequency, mainForm.binSize);


                BufferFramesObject zoomedOutBufferObject = mainForm.bufferFramesArray.GetBufferFramesObject(0);

                Utilities.FrequencyRange frequencyRange = Utilities.GetIndicesForFrequencyRange(frequency, frequency, zoomedOutBufferObject.lowerFrequency, zoomedOutBufferObject.binSize);


                long width = bufferFramesArray[0].bufferArray.Length / 2;


                ////transitionGradient = new TransitionGradient(frequency, (long) frequencyRange.lower, gradientStrength, this.transitions,gradient,width, Utilities.GetFrequencyFromIndex((long)(index-width), parent.lowerFrequency, mainForm.binSize), Utilities.GetFrequencyFromIndex((long)(index+width), parent.lowerFrequency, mainForm.binSize));

                transitionGradient = new TransitionGradient(frequency, index, gradientStrength, this.transitions, gradient, width, Utilities.GetFrequencyFromIndex((long)(index - width), parent.lowerFrequency, mainForm.binSize), Utilities.GetFrequencyFromIndex((long)(index + width), parent.lowerFrequency, mainForm.binSize));

                return(transitionGradient);
            }

            return(null);
        }