Discrete Fourier Transform - Discrete Fourier Transform - 2025.2 English - XD100

Vitis Tutorials: AI Engine Development (XD100)

Document ID
XD100
Release Date
2026-03-27
Version
2025.2 English

The DFT transforms a sequence of \(N\) complex (time-domain) numbers \({x_0, x_1, \ldots, x_{N-1}}\) into a second sequence of complex (frequency-domain) numbers \({X_0, X_1, \ldots, X_{N-1}}\) as shown in the following equation. Because each sample \(X_k\) requires \(N\) complex multiplications with the fixed “twiddle factors” \(\exp(-i2\pi kn/N)\), the computation requires \(N^2\) multiplications overall, leading to the computational complexity of \(O(N^2)\).

\[X_k = \sum_{n=0} ^{N-1} x_n \cdot e^{-i\dfrac{2\pi}{N}kn}\]

Direct computation of the preceding equation can be feasible for cases where \(N\) is not too large. You can write the preceding equation as a matrix-vector multiplication where an \(N\times N\) matrix collects the twiddle factors, and an \(N\times 1\) vector collects the samples \(x_n\). Indeed, a following section shows a “direct form” solution like this for a Versal DFT design.