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);
            }
        }
예제 #2
0
 public FourierTransformer()
 {
     calc = new FourierCalculator();
 }