Ejemplo n.º 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);
        }
Ejemplo n.º 2
0
        public TransitionGradient GetTransitionsGradientForFrequency(long frequency)
        {
            Utilities.FrequencyRange frequencyRange = Utilities.GetIndicesForFrequencyRange(frequency, frequency, parent.lowerFrequency, mainForm.binSize);

            double[] transitionsStrengthArray = GetAveragedStrengthOverTimeForIndex((long)frequencyRange.lower);

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


            return(new TransitionGradient(Utilities.GetFrequencyFromIndex((long)frequencyRange.lower, parent.lowerFrequency, mainForm.binSize), (long)frequencyRange.lower, gradient.CalculateTransitionGradient(), this.transitions, gradient));
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 4
0
        public void CalculateGradients()
        {
            if (bufferFramesArray.Count > 0)
            {
                gradients.Add(new GradientArray(bufferFramesArray[0].bufferArray.Length));

                gradients[gradients.Count - 1].time = (Environment.TickCount & int.MaxValue);

                double[] transitionsStrengthArray;

                double gradientStrength;

                double avgStackedFrames;

                Gradient gradient;

                for (long i = 0; i < bufferFramesArray[0].bufferArray.Length; i++)
                {
                    transitionsStrengthArray = GetStrengthOverTimeForIndex(i);

                    ////gradientStrength = SignalDataUtilities.SeriesTransitionGradient(transitionsStrengthArray);

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

                    avgStackedFrames = GetAverageStackedFramesForIndex(i);

                    gradient.stackedFrames = avgStackedFrames;

                    ////gradients[gradients.Count - 1].gradientArray[i] = new Gradient(gradientStrength, avgStackedFrames);

                    gradients[gradients.Count - 1].gradientArray[i] = gradient;
                }

                gradients[gradients.Count - 1].CalculateAverage();
            }
        }
        static public double CalculateStrengthDifference(float[] array1, float[] array2, long frequencyIndex)
        {
            /*////if (array1[frequencyIndex] == 0)
             *  return 0;
             *
             * double dif = (array2[frequencyIndex] - array1[frequencyIndex]);
             */

            /*////if (dif < 0)
             *  return dif;
             */


            /*////if (frequencyIndex == 0 || frequencyIndex == array1.Length - 1)
             *  return 0;
             */

            /*////if (array1[frequencyIndex - 1] >= array1[frequencyIndex] || array1[frequencyIndex + 1] >= array1[frequencyIndex])
             *  return 0;*/

            /*////double ratio1 = array1[frequencyIndex] / array1[frequencyIndex - 1];
             *
             * double ratio2 = array1[frequencyIndex] / array1[frequencyIndex + 1];
             */

            /*if (ratio1 > 0.9 && ratio1 < 1.1 && ratio2 > 0.9 && ratio2 < 1.1)
             *  return 0;*/


            /*double array1NoiseFloor = GetSurroundNoiseFloorStrength(array1, frequencyIndex, 20);
             *
             * double array2NoiseFloor = GetSurroundNoiseFloorStrength(array2, frequencyIndex, 20);
             *
             * double strength1 = array1[frequencyIndex] - array1NoiseFloor;
             *
             * double strength2 = array2[frequencyIndex] - array2NoiseFloor;
             *
             * if (strength2 < 0)
             *  return strength2;
             *
             * dif = strength2 - strength1;
             */

            /*double noiseFloorDif = array2NoiseFloor - array1NoiseFloor;
             *
             * dif -= noiseFloorDif;
             */

            ////double ratio = dif / strength2;

            ////double ratio = dif / array1[frequencyIndex];


            double array2NearestPeakStrength = SignalDataUtilities.GetNearestPeakStrength(array2, frequencyIndex);
            double array1NearestPeakStrength = SignalDataUtilities.GetNearestPeakStrength(array1, frequencyIndex);

            ////double ratio = array2NearestPeakStrength / array1NearestPeakStrength * 100;

            if (array1NearestPeakStrength > 0)
            {
                double ratio = array2[frequencyIndex] / array1NearestPeakStrength * 100;

                ////double ratio = array2[frequencyIndex] / array1[frequencyIndex] * 100;

                ////return ratio * Math.Abs(strength2) + ratio * (Math.Abs(strength2) /100);

                ////////return Math.Abs(dif) + ratio * Form1.series2Max * 0.01;
                return(ratio);
            }
            else
            {
                return(0);
            }
        }