예제 #1
0
        public void FourierTransform_16384_length_2000000_iterations()
        {
            var transformProvider = new ProviderFake();
            var windowFunction    = new BlackmanHarrisWindowFunction();

            var target = new FourierTransform(
                transformProvider,
                windowFunction,
                4096 * 4);

            target.Format = new WaveFormat(44100, 1);

            var buffers = new float[][] { new float[64] };

            for (int i = 0; i < 2000000; i++)
            {
                target.Process(buffers, 64);
            }
        }
        public void Should_correctly_calculate_window_function_coefficients()
        {
            var target = new BlackmanHarrisWindowFunction();

            var expected = new float[]
            {
                0.00006f,
                0.0109823309f,
                0.103011489f,
                0.385892659f,
                0.7938335f,
                1.0f,
                0.7938335f,
                0.385892659f,
                0.103011489f,
                0.0109823309f,
                0.00006f
            };

            var actual = target.CalculateCoefficients(10);

            CollectionAssert.AreEqual(expected, actual, new FloatComparer());
        }
        public void Should_throw_if_filter_order_is_negative()
        {
            var target = new BlackmanHarrisWindowFunction();

            target.CalculateCoefficients(-1);
        }