ILNumerics - Technical Computing Tools

High Performance Framework for Visualization

and Computing in Industry and Science

tgt

# Fast Fourier Transformations (FFT) in .NET (C#, VB)

## Background

A Fourier transformation converts a signal (samples, measures) from its original representation in the time or space domain into a representation in the frequency domain and vice versa. Both representations carry the same information about the source signal. However, the frequency domain allows a very different perspective to your data, delivers valuable insights and allows for efficient manipulation of your data in many technical areas.

Basically, the frequency domain as the result of the FFT allows one to look at the data as being assembled out of a number of sine and cosine wave signals. The frequencies of the sinusoidals are determined by the sampling frequency of the original data and the number of samples in the signal. The frequency bins delivered by the DFT provide information about the intensities (magnitudes) of these individual frequencies needed in order to sum up to the original signal.

The FFT rapidly computes such transformations by an efficient factorization algorithm. As a result the computational complexity of the transformation is dramatically reduced and the results are delivered much faster. ILNumerics implements the fastest algorithm available today and - together with the efficiency of the Computing Engine - brings the best possible speed for large data on multicore processors.

Example: A speech signal and its fourier transform. Download the complete example from the examples section.

## Interfaces to FFT in .NET (C#, Visual Basic)

ILNumerics provides interfaces to forward and backward fast fourier transformations (FFT), for real and complex floating point data, in single and double precision, in 1...n dimensions. The .NET interface (available for C# and Visual Basic) is similar to the one known from popular mathematical languages like Matlab®.FFT can be computed for any size and dimension number. However, signal lengths of 2n, where $n \in N$ are computed most efficiently.

The recommended way for fourier transforms is to utilize the static functions from the ILMath class. They provide a convenient interface, similar to popular mathematical languages. These functions automatically profit from the high performance memory management of ILNumerics and are described in the FFT Functions Section.

ILNumerics relies on the Intel MKL® for FFT computations by default. However, bindings to several other libraries exist, namely AMD ACML and FFTW3. On a lower level, the IILFFT interface is provided, which allows the implementation of custom FFT modules. Which module is used is configurable at runtime. Details are found in the FFT Modules article.