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