Press on the image to return to the main documentation page.
FFT
This library contains an FFT object for performing Fast Fourier Transforms. This is a port of the FFT from the SciMark2a Java Benchmark to C# by Chris Re (cmr28@cornell.edu) and Werner Vogels (vogels@cs.cornell.edu). For details on the original authors see http://math.nist.gov/scimark2. Further modified by Andrew Graham to support separate Real and Imaginary arrays
This is the FFT object for performing Fast Fourier Transforms. The FFT object in this library requires that the length of the real and imaginary data arrays are some power of 2 and are of the same size as each other. The most common use for an FFT is to analyse a sampled data series in terms of the frequencies it contains. In the real world each sample consists only of a real amplitude value. To transform this time sampled series into a frequency series the amplitude values are placed in time sequence into the real array and all the values in the corresponding imaginary array are set to zero.
Once the FFT.Transform method has been called the real array will contain the amplitude values of the Cosine elements of the waveform and the imaginary array will contain the amplitudes of the Sine elements. Usually only the first half of each array is relevant as the last half of the array contains the same information as the first half but expressed as its' complex conjugate. Because of this Transform2 is provided that takes only a real time series and returns the relevant halves of the real and imaginary results leaving the original data series intact.
Often the vector amplitude, and possibly the relative phase, of the frequency components is required. The FFT.ToAmplitude and FFT.ToPhase can transform the Cosine and Sine result from the transform to this format. The corresponding methods to transform amplitude and phase data back to real and imaginary data are provided and also the inverse FFT to transform real and imaginary frequency data back to time domain data.