Exemplo n.º 1
0
        void FftCalculated(object sender, FftEventArgs fftEvent)
        {
            double[] spectrumData = CalculateSpectrum(fftEvent.Result);

            dataBuffer.Enqueue(spectrumData);

            if (dataBuffer.Count <double[]>() >= bufferLenght)
            {
                double[] average = new double[spectrumData.Length];
                for (int i = 0; i < spectrumData.Length; i++)
                {
                    average[i] = dataBuffer.Sum <double[]>((x) => x[i]) / dataBuffer.Count <double[]>();
                    //if (average.Max((x) => Math.Abs(x)) > temp)
                    //{
                    //    temp = average.Max((x) => Math.Abs(x));
                    //}
                }
                while (dataBuffer.Count <double[]>() != bufferLenght)
                {
                    dataBuffer.Dequeue();
                }


                //double[] spectrumBars = SpectrumBars(average);
                SpectrumCalculated.Invoke(average);
            }
        }
Exemplo n.º 2
0
        private void CalculateSpectrum()
        {
            if (_spectrumChannel == null)
            {
                return;
            }
            var readLength = (int)(SamplingFrequency * WindowDuration);

            if (readLength <= 0)
            {
                return;
            }

            var offset = _spectrumChannel.TotalLength - readLength;

            if (offset < 0)
            {
                offset     = 0;
                readLength = _spectrumChannel.TotalLength;
            }
            Spectrum = new Spectrum(_spectrumChannel.Info.Name,
                                    _spectrumChannel.ReadData(offset, readLength));
            SpectrumCalculated?.Invoke(this, null);
        }