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

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

            var data = d.ToList();

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

            var powerSpectrum = SpectralAnaylser.PowerSpectrum(fftData).ToArray();

            var expected = Math.Sqrt(data.Select(x => x * x).Sum() / data.Count);

            var rmsPowerSpec = SpectralAnaylser.RmsFromPowerSpec(powerSpectrum);

            Assert.AreEqual(expected, rmsPowerSpec, 0.0001);
        }
Exemplo n.º 2
0
        public void SpectralAnalysis_PowerSpectrum_FromComplexFFT()
        {
            var sineGen = new SineWaveGenerator(1000, 100, 52100);

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

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

            var powerSpectrum = SpectralAnaylser.PowerSpectrum(fftData).ToArray();

            //First 20 points
            var expectedData = new[]
            {
                0.245170056015,
                0.49658325619,
                0.515681392978,
                0.548785216463,
                0.597970475506,
                0.66651053222,
                0.759341701516,
                0.883840416896,
                1.05113644411,
                1.2783980737,
                1.59297851554,
                2.04035148994,
                2.70034243877,
                3.7232172295,
                5.41902088726,
                8.51292503252,
                15.0403276039,
                32.666419917,
                113.029844515,
                4391.24421811
            };

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