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); } }