Пример #1
0
        /// <summary>
        /// Real to complex transform.
        /// </summary>
        static void Example2(int length)
        {
            Console.Write("Test 2: real to complex transform ... ");

            int n = length;

            // Create two managed arrays, possibly misalinged.
            var data = Util.GenerateSignal(n);

            // Copy to native memory.
            var input  = new RealArray(data);
            var output = new ComplexArray(n / 2 + 1);

            // Create a managed plan.
            var plan1 = Plan.Create1(n, input, output, Options.Estimate);

            plan1.Execute();

            var plan2 = Plan.Create1(n, output, input, Options.Estimate);

            plan2.Execute();

            Array.Clear(data, 0, n);

            // Copy unmanaged output of back-tranform to managed array.
            input.CopyTo(data);

            // Check and see how we did.
            Util.CheckResults(n, n, data);
        }
Пример #2
0
        public double[] Spectrum(double[] input, bool scale)
        {
            int length = input.Length;

            using (var data1 = new RealArray(length))
                using (var data2 = new ComplexArray(length / 2 + 1))
                    using (var plan1 = Plan.Create1(length, data1, data2, Options.Estimate))
                        using (var plan2 = Plan.Create1(length, data2, data1, Options.Estimate))
                        {
                            data1.Set(input);

                            plan1.Execute();

                            var temp     = data2.ToArray();
                            var spectrum = Helper.ComputeSpectrum(temp);

                            plan2.Execute();

                            data1.CopyTo(input);

                            if (scale)
                            {
                                for (int i = 0; i < length; i++)
                                {
                                    input[i] /= length;
                                }
                            }

                            return(spectrum);
                        }
        }