/// <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); }
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); } }