示例#1
0
        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);
            }
        }
示例#2
0
        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);
            }
        }