Output: another sequence of $N$ complex numbers $X_{k}$ such that:
Intuitively, this means that we are braking up the complex signal into $N$ sinusoidal frequencies:and is the amplitude of each sine.

$x_{n}=N1 ∑_{k=0}X_{k}e_{i2πNkn}$

- $X_{0}$: is kind of magic and ends up being a constant added to the signal because $e_{i2πNkn}=e_{0}=1$
- $X_{1}$: sinusoidal that completes one cycle over the signal. The larger the $N$, the larger the resolution of that sinusoidal. But it completes one cycle regardless.
- $X_{2}$: sinusoidal that completes two cycles over the signal
- ...
- $X_{N−1}$: sinusoidal that completes $N−1$ cycles over the signal

We use Zero-based numbering in our definitions because it just makes every formula simpler.

Motivation: similar to the Fourier transform:In particular, the discrete Fourier transform is used in signal processing after a analog-to-digital converter. Digital signal processing historically likely grew more and more over analog processing as digital processors got faster and faster as it gives more flexibility in algorithm design.

- compression: a sine would use N points in the time domain, but in the frequency domain just one, so we can throw the rest away. A sum of two sines, only two. So if your signal has periodicity, in general you can compress it with the transform
- noise removal: many systems add noise only at certain frequencies, which are hopefully different from the main frequencies of the actual signal. By doing the transform, we can remove those frequencies to attain a better signal-to-noise

Sample software implementations:

- numpy.fft, notably see the example: numpy/fft.py