Continuous and discrete Fourier transforms
To cite this page
@misc{swpkim2024continuous,
author={P. Kim, Sun Woo},
title={Continuous and discrete Fourier transforms},
year={2023},
howpublished={\url{https://sunwoo-kim.github.io/en/posts/fourier-transforms/}},
}
The conventions and relationships between discrete Fourier transforms (DFT), Fourier series, and continuous Fourier transforms (FT), are confusing enough that I decided to write a reference on it.
These notes closely follow the appendix of Austen Lamacraft’s notes, but with some different choices in notation to explain each step as clearly as I can.
Discrete Fourier transform
Consider a function $f_j$ defined for discrete inputs $j = {0, \dots, N-1}$.
Then we can define the discrete fourier transform (DFT) by
$$ \tilde{f}_n = C(N) \sum_{j=0}^{N-1} f_j e^{-i 2 \pi n j/N}, $$
where $C(N)$ is a normalisation constant. Since $\tilde{f}_n$ is periodic in $n$ with period $N$, there are many choices for the domain for $n$. We could choose $n \in {0, \dots, N-1}$, or choose the domain to be symmetric(ish),
\begin{equation} \label{symmetric_domain} n \in \begin{dcases} \left \{ -\frac{N}{2}, \dots, \frac{N}{2}-1 \right\} & N \text{ even} \\ \left \{ -\frac{N-1}{2}, \dots, \frac{N-1}{2} \right\} & N\text{ odd}. \end{dcases} \end{equation}
Whichever convention we choose, we can use the identity $\sum_n e^{+i 2 \pi n j /N} = N\delta_{j,0 \text{mod} N}$, to show that
$$ f_j = \tilde C(N) \sum_{n} \tilde{f}_n e^{+i 2 \pi n j/N}, $$
where the normalisation constants $C(N)$, $\tilde C(N)$ can be chosen to be anything, as long as $C(N) \tilde C(N) = 1/N$. The popular choice is $C, \tilde C = 1/\sqrt{N}$.
Later, we will want to look at the limits of $N \rightarrow \infty$. There we will choose the appropriate normalisations $C(N), \tilde C(N)$ such that the integrals have a well-defined limit.
(Of course, the sign in the exponential is also a convention in defining the Fourier transforms, but the convention used here is used almost everywhere, so let’s not be worried about that.)
Adding space
We can consider the case where our function is a function on discrete space $x_j = aj$, where $a$ is the lattice spacing. Then the system size is $L=Na$, and $N$ the number of discrete sptial points. Then the Fourier transform becomes
$$ \tilde{f}_n = C(N) \sum_{j=1}^N f(x_j) e^{-i 2 \pi n x_j/L}. $$
We can also define the wavevector $k_n = 2 \pi n /L$, and write
$$ \tilde{f}(k_n) = {C}(N) \sum_{j=1}^N f(x_j) e^{-i k_n x_j}, $$
whilst the inverse transform becomes
$$ f(x_j) = \tilde{C}(N) \sum_{n} \tilde{f}(k_n) e^{+i k_n x_j}. $$
Now, let’s make two choices from this point onwards:
- First, let’s choose the symmetric domain for $n$.
- And, let’s expand the domain for $j$ to be $\mathbb Z$, and say that $f_j$ is periodic in $N$, $f_{j} = f_{j+N}$. This doesn’t do anything, as we can just look at the function in the domain we were interested in the end. But it does mean that we can also choose the symmetric domain Eq. \eqref{symmetric_domain} for $j$ as well.
$N \rightarrow \infty$ and $a \rightarrow 0$ keeping $Na = L$ fixed
Here, we are going to continuous real-space, but fix the length of the system. This will result in a countably infinite wavevector space. We can write the discrete Fourier transform as
$$ \tilde{f}(k_n) = {C}(N) \sum_{j} f(x_j) e^{-i k_n x_j}. $$
Then, the spacing between positions becomes $\delta x_j = a$. We can choose $C(N) = a$, so we have the limit
$$ \tilde{f}(k_n) = \int_{-L/2}^{L/2} dx f(x) e^{-i k_n x}, $$
which then means that we require $\tilde C(N) = 1/L$, so we have the inverse transform as
$$ f(x) = \frac{1}{L} \sum_{n \in \mathbb{Z}} \tilde{f}(k_n) e^{+i k_n x}. $$
where now $n \in \mathbb{Z}$.
This then is just the Fourier series of a periodic function $f(x)$.
$N \rightarrow \infty$ and $L \rightarrow \infty$, keeping $a$ fixed
Here, we are going to keep the real-space discrete, but just make it infinitely long. This will result in a continuously varying wavevector space. We have
$$ \tilde{f}(k) = {C}(N) \sum_{j \in \mathbb{Z}} f(x_j) e^{-i k x_j}, $$
and
$$ f(x_j) = \tilde{C}(N) \sum_{n} \tilde{f}(k_n) e^{+i k_n x_j}. $$
Since $k_n = 2 \pi n /L = 2\pi n /Na$, our spacing between wavevectors goes to zero. We have $\delta k_n = 2 \pi /N a$. The most popular convention is to choose $\tilde C (N) = 1/Na$, so that we have
$$ f(x_j) = \int_{-\pi/a}^{\pi /a} \frac{dk}{2 \pi} \tilde{f}(k) e^{+i k x_j}. $$
This means that the forward Fourier transform must be
$$ \tilde{f}(k) = a \sum_{j \in \mathbb{Z}} f(x_j) e^{-i k x_j}. $$
Normally, in this limit, people work with $a=1$ with $x_j =j$.
Sending $N \rightarrow \infty$, $L \rightarrow \infty$, $a \rightarrow 0$
From the expressions for the $N \rightarrow \infty$, $L \rightarrow \infty$, and $a$ fixed, we just send $a \rightarrow 0$. Since the spacing between spatial points is $\delta x_j = a$, we can just write down
$$ \tilde{f}(k) = \int_{-\infty}^{\infty} dxf(x) e^{-i k x}, $$
and
$$ f(x) = \int_{-\infty}^{\infty} \frac{dk}{2 \pi} \tilde{f}(k) e^{+i k x}. $$