From 208828f07f02dd16adec6a4d6f48134e5edb0f31 Mon Sep 17 00:00:00 2001 From: Christoph Ruegg Date: Wed, 12 Aug 2009 00:32:50 +0800 Subject: [PATCH] transforms: now testing parseval's theorem Signed-off-by: Christoph Ruegg --- .../IntegralTransformsTests/DftTest.cs | 20 +++++++++++++++++++ .../DescriptiveStatisticsTests.cs | 2 +- .../StatisticsTests/StatTestData.cs | 2 +- .../StatisticsTests/StatisticsTests.cs | 2 +- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/Managed.UnitTests/IntegralTransformsTests/DftTest.cs b/src/Managed.UnitTests/IntegralTransformsTests/DftTest.cs index cf1e4b1f..4b1908b5 100644 --- a/src/Managed.UnitTests/IntegralTransformsTests/DftTest.cs +++ b/src/Managed.UnitTests/IntegralTransformsTests/DftTest.cs @@ -29,9 +29,11 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests { using System; + using System.Linq; using MbUnit.Framework; using IntegralTransforms; using IntegralTransforms.Algorithms; + using Statistics; [TestFixture] public class DftTest @@ -242,5 +244,23 @@ namespace MathNet.Numerics.UnitTests.IntegralTransformsTests AssertHelpers.AlmostEqualList(samples, work, 1e-12); } + + [Test] + public void TransformSatisfiesParsevalsTheorem() + { + var samples = ProvideSamples(0x1000); + + var timeSpaceEnergy = (from s in samples select s.ModulusSquared).Mean(); + + var work = new Complex[samples.Length]; + samples.CopyTo(work, 0); + + // Only symmetric scaling scaling satisfies the theorem, hence FourierOptions.Default. + Transform.FourierForward(work, FourierOptions.Default); + + var frequencySpaceEnergy = (from s in work select s.ModulusSquared).Mean(); + + Assert.AreApproximatelyEqual(timeSpaceEnergy, frequencySpaceEnergy, 1e-12); + } } } diff --git a/src/Managed.UnitTests/StatisticsTests/DescriptiveStatisticsTests.cs b/src/Managed.UnitTests/StatisticsTests/DescriptiveStatisticsTests.cs index b70a1fb6..c59e5273 100644 --- a/src/Managed.UnitTests/StatisticsTests/DescriptiveStatisticsTests.cs +++ b/src/Managed.UnitTests/StatisticsTests/DescriptiveStatisticsTests.cs @@ -26,7 +26,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -namespace MathNet.Numerics.UnitTests.Statistics +namespace MathNet.Numerics.UnitTests.StatisticsTests { using System; using System.Collections.Generic; diff --git a/src/Managed.UnitTests/StatisticsTests/StatTestData.cs b/src/Managed.UnitTests/StatisticsTests/StatTestData.cs index 60308827..425887d9 100644 --- a/src/Managed.UnitTests/StatisticsTests/StatTestData.cs +++ b/src/Managed.UnitTests/StatisticsTests/StatTestData.cs @@ -26,7 +26,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -namespace MathNet.Numerics.UnitTests.Statistics +namespace MathNet.Numerics.UnitTests.StatisticsTests { using System.IO; using System.Linq; diff --git a/src/Managed.UnitTests/StatisticsTests/StatisticsTests.cs b/src/Managed.UnitTests/StatisticsTests/StatisticsTests.cs index 6f551e65..f888cf5a 100644 --- a/src/Managed.UnitTests/StatisticsTests/StatisticsTests.cs +++ b/src/Managed.UnitTests/StatisticsTests/StatisticsTests.cs @@ -26,7 +26,7 @@ // OTHER DEALINGS IN THE SOFTWARE. // -namespace MathNet.Numerics.UnitTests.Statistics +namespace MathNet.Numerics.UnitTests.StatisticsTests { using System; using System.Collections.Generic;