Exemplo n.º 1
0
        private static void TestConvolution(int size)
        {
            Complex[] input0vector = RandomComplexes(size);
            Complex[] input1vector = RandomComplexes(size);
            Complex[] refoutvector = new Complex[size];
            NaiveConvolve(input0vector, input1vector, refoutvector);

            Complex[] actualoutvector = new Complex[size];
            Fft.Convolve(input0vector, input1vector, actualoutvector);
            Console.WriteLine("convsize={0,4}  logerr={1,5:F1}", size, Log10RmsErr(refoutvector, actualoutvector));
        }
Exemplo n.º 2
0
        private static void TestFft(int size)
        {
            Complex[] inputvector  = RandomComplexes(size);
            Complex[] refoutvector = new Complex[size];
            NaiveDft(inputvector, refoutvector, false);
            Complex[] actualoutvector = (Complex[])inputvector.Clone();
            Fft.Transform(actualoutvector, false);
            double err = Log10RmsErr(refoutvector, actualoutvector);

            Complex[] actualinvector = new Complex[size];
            for (int i = 0; i < size; i++)
            {
                actualinvector[i] = refoutvector[i] / size;
            }
            Fft.Transform(actualinvector, true);
            err = Math.Max(Log10RmsErr(inputvector, actualinvector), err);
            Console.WriteLine("fftsize={0,4}  logerr={1,5:F1}", size, err);
        }