void FftSpectrum(WWDecimalComplex[] signalTime) { WWDecimalFft fft = new WWDecimalFft(LENGTH); var signalFreq = fft.ForwardFft(signalTime, 1M/LENGTH); var result = new Dictionary<double, double>(); Parallel.For(0, LENGTH / 2, i => { decimal magnitude = signalFreq[i].Magnitude(); double db = (double)(20M * WWDecimalMath.Log10(magnitude)); lock (result) { result.Add((double)(SAMPLERATE * i / LENGTH), db); } }); foreach (var item in result) { Console.WriteLine("{0},{1}", item.Key, item.Value); } }
void FftSpectrum(WWDecimalComplex[] signalTime) { WWDecimalFft fft = new WWDecimalFft(LENGTH); var signalFreq = fft.ForwardFft(signalTime, 1M / LENGTH); var result = new Dictionary <double, double>(); Parallel.For(0, LENGTH / 2, i => { decimal magnitude = signalFreq[i].Magnitude(); double db = (double)(20M * WWDecimalMath.Log10(magnitude)); lock (result) { result.Add((double)(SAMPLERATE * i / LENGTH), db); } }); foreach (var item in result) { Console.WriteLine("{0},{1}", item.Key, item.Value); } }