private void BindFFTOutput(double[] wave, WaveSetup setup) { var fftResult = FourierCalculator.Forward(wave); var series = new Series("Freq " + (chartFFTOutputs.Series.Count + 1)); chartFFTOutputs.Series.Add(series); double hzInSample = setup.SampleRate / setup.NumberOfSamples; for (int i = 0; i <= maxFreq; i++) { var val = fftResult[i]; var powR = Math.Pow(val.Item1, 2); var powI = Math.Pow(val.Item2, 2); //abs = abs(sqrt(real^2+imag^2)) var abs = Math.Abs(Math.Sqrt(powR + powI)); double mag = (2.0 / setup.NumberOfSamples) * abs; chartFFTOutputs.Series[series.Name].Points.AddXY(i * hzInSample, mag); } }
public FourierTransformer() { calc = new FourierCalculator(); }