/// <summary> /// Calculates the fft bins. /// This code is taken from the config ui training code to calculate fft bins /// </summary> /// <param name="fftSize">Size of the FFT.</param> /// <param name="timeRate">The time rate.</param> /// <returns>a list of fft bin boundaries</returns> public List <double> CalculateFFTBins(FftSizes fftSize, TdSampleRates timeRate) { int numBins = 0; switch (fftSize) { case FftSizes.Size0064: numBins = 64 / 2; break; case FftSizes.Size0256: numBins = 256 / 2; break; case FftSizes.Size1024: numBins = 1024 / 2; break; default: ConfigConversions.DisplayErrorMessageAndClose("Could not convert FFT Size for FFT bins"); break; } int rate = 0; switch (timeRate) { case TdSampleRates.Sample0250Hz: rate = 250; break; case TdSampleRates.Sample0500Hz: rate = 500; break; case TdSampleRates.Sample1000Hz: rate = 1000; break; default: ConfigConversions.DisplayErrorMessageAndClose("Could not convert TDSampleRate for FFT bins"); break; } double binWidth = rate / 2.0 / numBins; for (int i = 0; i < numBins; i++) { bins.Add(i * binWidth); } return(bins); }
/// <summary> /// Converts the FFT size from config file to correct api call format /// </summary> /// <param name="FftSizesToConvert">integer value of 64, 256, or 1024</param> /// <returns>Medtronic api format for FftSizes or displays error and closes program if incorrect</returns> public static FftSizes FftSizesConvert(int FftSizesToConvert) { FftSizes fftSizes = 0; switch (FftSizesToConvert) { case 64: fftSizes = FftSizes.Size0064; break; case 256: fftSizes = FftSizes.Size0256; break; case 1024: fftSizes = FftSizes.Size1024; break; default: DisplayErrorMessageAndClose("Couldn't convert FFT Size"); break; } return(fftSizes); }