[TOC]
using System;
using System.Globalization;
using System.Threading;
using System.Text;
using CenterSpace.NMath.Core;
namespace CenterSpace.NMath.Core.Examples.CSharp
{
/// <summary>
/// A .NET example in C# showing how to use the basic Fast Fourier Transform (FFT) classes.
/// </summary>
class FFTExample
{
static void Main(string[] args)
{
# region forward 1D real 1024 point FFT
//
// Simple example to compute a forward 1D real 1024 point FFT
//
// Create some random signal data.
RandomNumberGenerator rand = new RandGenMTwist(4230987);
DoubleVector data = new DoubleVector(1024, rand);
// Compute the FFT
// This will create a complex conjugate symmetric packed result.
DoubleForward1DFFT fft1024 = new DoubleForward1DFFT(1024);
DoubleVector fftresult = fft1024.FFT(data);
// Ask the FFT instance for the correct reader, to unpacked the result.
DoubleSymmetricSignalReader reader = fft1024.GetSignalReader(data);
// The reader provides random access to any element in the pack fft result.
DoubleComplex thirdelement = reader[2];
Console.WriteLine();
Console.WriteLine("1D real forward 1024 point FFT computed.");
Console.WriteLine("-----------------------------------\n");
#endregion
#region backward 1D complex 1000 point FFT
//
// Simple example to compute a backward 1D complex 1000 point FFT
//
// Create some new random signal data.
DoubleComplexVector cdata = new DoubleComplexVector(1000, rand);
// Create the 1D backward complex FFT instance
DoubleComplexBackward1DFFT fft1000 = new DoubleComplexBackward1DFFT(1000);
// Compute the FFT
// Complex FFT's generated unpacked results.
fft1000.FFTInPlace(cdata);
Console.WriteLine("1D complex backward 1000 point FFT computed.");
Console.WriteLine("-----------------------------------\n");
#endregion
Console.WriteLine();
Console.WriteLine("Finished. Press Enter Key.");
Console.Read();
}
}
}
[TOC]