The discrete Fourier transform
A sequence
Both sums are matrix-vector products with the
Conventions
FFTL uses the two signs and the two normalisations that are common in signal processing:
| function | sign | normalisation |
|---|---|---|
fft | none | |
bfft | none | |
ifft |
With these, dct of FFTL is the orthonormal one, the convention that keeps the energy unchanged.
Why a Fourier transform at all
For a signal sampled at rate
The bins above rfft returns that half.
Multiplying spectra is convolution in time: the cyclic convolution of two sequences is the inverse transform of the product of their transforms. A linear convolution is the cyclic one of zero-padded inputs. This turns filtering of long signals into
The algorithm as divide and conquer
The idea that makes the FFT fast is the one behind merge sort. Split the sum by the parity of the index,
Each sum is a DFT of length