Пример #1
0
        public void Recalculate(BatCall call)
        {
            FftResult fftResult = Analyze(call);

            call.DcOffset = fftResult.DcOffset;
            uint maxPeak      = 0;
            int  maxPeakIndex = -1;

            foreach (int peakIndex in fftResult.Peaks)
            {
                uint peakValue = fftResult.FftData[peakIndex];
                if (peakValue > maxPeak)
                {
                    maxPeak      = peakValue;
                    maxPeakIndex = peakIndex;
                }
            }
            if ((maxPeakIndex >= 0) && (maxPeak > 10))
            {
                call.MaxFrequency = (uint)Math.Round(maxPeakIndex * 0.451);
            }
            else
            {
                call.Enabled = false;
            }
        }
Пример #2
0
        public FftResult Analyze(BatCall call)
        {
            FftResult result = new FftResult();

            result.FftData  = BuildFft(call);
            result.DcOffset = result.FftData[0];

            result.Peaks = GetPeaks(result.FftData).Select(p => p.Key).ToArray();
            return(result);
        }
Пример #3
0
		public FftResult Analyze(BatCall call)
		{
			FftResult result = new FftResult();

			result.FftData = BuildFft(call);
			result.DcOffset = result.FftData[0];

			result.Peaks = GetPeaks(result.FftData).Select(p => p.Key).ToArray();
			return result;
		}