private static double[] CreateTestSamples() { var rnd = WhiteGaussianNoiseGenerator.CreateDefaultRandomGenerator(); var generator = new WhiteGaussianNoiseGenerator(rnd); return(generator.Next(SamplingRate * SampleLengthInSeconds)); }
public void ResultsAreReal() { Random rnd = new Random(); var generator = new WhiteGaussianNoiseGenerator(() => rnd.NextDouble()); generator.Range = new Range <double>(-1, 1); Assert.IsFalse(generator.Next(1000).Any(x => Double.IsNaN(x) || Double.IsInfinity(x))); }
public void MeanSignalPowerIsOne() { // We're working with random numbers then our test is little bit aleatory, // it's better to repeat it few times to be sure it didn't pass "by case". // Also the number of samples MUST be high enough to have a reliable distribution. const int numberOfSamples = 100000; const int repetitions = 5; Random rnd = new Random(); for (int repetition = 0; repetition < repetitions; ++repetition) { var generator = new WhiteGaussianNoiseGenerator(() => rnd.NextDouble()); generator.Range = new Range <double>(-1, 1); double power = Enumerable.Range(0, numberOfSamples) .Sum(x => Math.Pow(Magnitude(generator.Next()), 2.0)) / numberOfSamples; Assert.AreEqual(1.0, power, 0.1); } }