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.
Copies the length number of elements from the one dimensional Double srcarray starting at the first element to one dimensional Double destarray starting at the first element.
Inverse (real() AsDouble, imag() AsDouble)
Performs an inverse FFT on the frequency domain cosine and sine data in the real and imaginary arrays and replaces the frequency domain data with the the real and imaginary time domain data. The transform is made in place and the contents of the specified arrays are altered to contain the result The length of the arrays must be the same and be a power of 2.
Performs an inverse FFT on the frequency domain cosine and sine data in the real and imaginary arrays and places the real part of the resulting time domain data in data. The halfreal and halfimag arrays are assumed to contain the first half of the frequency domain data and remain unchanged when the method returns. The necessary complex conjugates of each are calculated internally in the method and used in the inverse transform. The length of the data array must be a power of 2 and the length of the halfreal and halfimag arrays must be half that of the data array.
Returns a new array of Doubles containing the vector amplitude values calculated from the cosine and sine data in the real and imaginary arrays provided. The length of the arrays must be the same.
Returns a new array of Doubles containing the imaginary (Sine) values calculated from the amplitude and phase data in the amplitude and phase arrays provided. The length of the input arrays must be the same.
Returns a new array of Doubles containing the vector phase values, in degrees, calculated from the cosine and sine data in the real and imaginary arrays provided. The length of the input arrays must be the same.
Returns a new array of Doubles containing the real (Cosine) values calculated from the amplitude and phase data in the amplitude and phase arrays provided. The length of the input arrays must be the same.
Transform (real() AsDouble, imag() AsDouble)
Performs a forward FFT on the time domain data in the real and imaginary arrays and replaces the time domain data with the real and imaginary cosine and sine frequency domain data. The transform is made in place and the contents of the specified arrays are altered to contain the result. The length of the arrays must be the same and be a power of 2.
Performs a forward FFT on the time domain data in the data array and places the first half of the real and imaginary cosine and sine frequency domain data in the halfreal and halfimag arrays discarding the complex conjugate parts. The imaginary components of the time domain data for the transform are set to zero within the method and the data array is unchanged when the method returns. The length of the data array must be a power of 2 and the length of the halfreal and halfimag arrays must be half that of the data array.