Exemplo n.º 1
0
        public void SpectralAnalysis_PhaseSpectrum_FromComplexFFT()
        {
            var sineGen = new SineWaveGenerator(1000, 100, 52100);

            var data = sineGen.GetNextXSamples(1000).SelectMany(x => x.Data);

            var fftData = SpectralAnaylser.FFT(data).ToArray();

            var phaseSpectrum = SpectralAnaylser.PhaseSpectrum(fftData).ToArray();

            //First 20 points
            var expectedData = new[]
            {
                0.0,
                -0.0817719008353,
                -0.162338293035,
                -0.240593343449,
                -0.31561082457,
                -0.386691476229,
                -0.453375155817,
                -0.515423897005,
                -0.572786506438,
                -0.625555489858,
                -0.673924561297,
                -0.718151650664,
                -0.758529444166,
                -0.795363549908,
                -0.828957341093,
                -0.859602141888,
                -0.887571419288,
                -0.913117826042,
                -0.93647217888,
                -0.957843686925
            };

            for (var i = 0; i < expectedData.Length; i++)
            {
                Assert.AreEqual(expectedData[i], phaseSpectrum[i], 0.0001);
            }
        }