The Graph Fourier Transform: From Sinusoids to Eigenvectors
Table of Contents
The ordinary Fourier transform decomposes a signal into frequencies, and “frequency” makes intuitive sense when your signal lives on a line or a circle: it’s how fast a sine wave oscillates as you walk along that line. But plenty of data doesn’t live on a line. Sensor readings sit on the nodes of a sensor network. Traffic measurements sit on a road graph. A signal on a social network is one number per user, connected in whatever irregular way friendships happen to connect them. There’s no natural direction to walk in, so “how fast does this oscillate” stops meaning anything obvious.
And yet there’s a well defined way to talk about frequency on a graph, and it turns out to be exactly the machinery from the last article. The eigenvectors of the graph Laplacian play the same role that sine and cosine waves play for ordinary Fourier analysis, and the connection isn’t just an analogy, it’s the same underlying idea (decomposing a signal into the eigenbasis of a particular operator) applied to two different domains, one continuous and one discrete.
Part 1: what frequency actually is
Start with a periodic function on the circle, meaning . The building blocks of its Fourier series are the complex exponentials for integer . Differentiate one twice:
So is an eigenfunction of the second-derivative operator, with eigenvalue . Flip the sign and write (calling it deliberately, this is the continuous Laplacian), and
This is the entire content of the claim “sinusoids are the natural frequency basis”: they are, quite literally, the eigenfunctions of the Laplacian operator, and the eigenvalue is what we’ve been informally calling the frequency squared. The Fourier transform isn’t a separate piece of machinery bolted onto calculus, it’s an eigendecomposition.
Why the Laplacian specifically, and not some other operator? Because measures local roughness. For a function , the Dirichlet energy quantifies how much oscillates: a flat function has zero Dirichlet energy, a wildly oscillating one has a large one. Expand in its Fourier series, , differentiate term by term, and use the orthogonality relation :
The cross terms vanish by orthogonality, and what survives is a direct correspondence: the roughness of is exactly a weighted sum of its Fourier coefficients, weighted by , the eigenvalue attached to each mode. High-frequency modes carry more of the roughness, low-frequency modes carry less, and the constant mode carries none at all. Frequency, roughness, and eigenvalue of the Laplacian are three names for the same quantity.
That last identity is the thread to pull on. It doesn’t actually use anything about the circle specifically, translation invariance, periodicity, none of it enters the argument. All it needs is an operator that measures roughness and a basis that diagonalises it. A graph has no translations to speak of, but it absolutely has a notion of roughness, and it has an operator to match.
Part 2: the graph version
A graph signal is just a function , one real number per vertex. The graph Laplacian from before, , is the discrete stand-in for , and the parallel to Dirichlet energy is immediate. For any signal ,
This is a direct calculation: , and regrouping the sum edge by edge turns this into . It’s non-negative for every (it’s a sum of squares), which is why is positive semidefinite, and it’s the exact discrete analogue of : instead of measuring how much changes over an infinitesimal step along a line, it measures how much changes across each edge of the graph.
Because is real and symmetric, the spectral theorem guarantees an orthonormal basis of eigenvectors with real eigenvalues . Collect the eigenvectors as columns of an orthogonal matrix . The Graph Fourier Transform of a signal is defined as
exactly mirroring the Fourier series, a signal written as a weighted sum of fixed basis modes. And because diagonalises the quadratic form,
which is the discrete Parseval identity: total roughness equals the sum of squared Fourier coefficients weighted by eigenvalue, the same relationship derived above for the circle, except the finite-dimensional version falls out in one line of linear algebra instead of an integration by parts. The eigenvalue is the graph’s notion of : small means the eigenvector is nearly constant across every edge (low frequency, smooth), large means flips sign or swings wildly between neighbours (high frequency, rough). The smallest eigenvalue is always , achieved by the constant vector (every row of sums to zero), playing the role of the DC component in the continuous case.
Part 3: an exact case where the analogy is not an analogy
For most graphs the eigenvectors of have no closed form, you compute them numerically and that’s that. But for one important family, the cycle graph (vertices arranged in a ring, each connected to its two neighbours), the eigenvectors work out exactly, and they turn out to be the classical discrete Fourier basis itself.
The Laplacian of has a special structure: every row is the previous row shifted over by one, because every vertex looks identical to every other vertex up to relabelling. A matrix with this property is called circulant: for some fixed sequence (the “first row”).
Claim. Every circulant matrix has eigenvectors , for , where , with eigenvalue .
Proof. Compute the -th entry of directly:
Substitute , so and (this holds even across the wraparound because ). As ranges over , ranges over the same set, so
for every , so .
This proof used nothing about specifically, it’s a general fact about any circulant matrix. Now apply it. The Laplacian of has first row (the degree), (the clockwise neighbour), (the counterclockwise neighbour), and zero everywhere else. Plugging into the formula for :
using and the half-angle identity . So the eigenvalues of the cycle Laplacian are , and the eigenvectors are : the exact complex exponential basis of the classical discrete Fourier transform, on the nose. On a cycle, the Graph Fourier Transform is the DFT, not an analogue of it. (Pairing up and , which share the same eigenvalue since is symmetric about , and taking real and imaginary parts recovers real sine and cosine eigenvectors, exactly as combining and recovers real sinusoids in the continuous case.)
As a check, take : gives , , , . Four vertices, eigenvalues , one zero mode, two mirror-image frequency-1 modes at , and one fastest-oscillating mode at where adjacent vertices alternate sign. That last one is the graph equivalent of the highest frequency a 4-sample signal can represent, the discrete analogue of the Nyquist limit.
Part 4: a worked example on an irregular graph
Cycles are convenient because of the symmetry, but the whole point of the graph Fourier transform is that it works on graphs with no symmetry at all. The diamond graph from the spanning tree article (vertices , edges ) has less symmetry than a cycle but still enough to get a clean answer by hand, using its automorphisms directly: swapping vertices leaves the graph unchanged, and so does swapping , independently. Any eigenvector must be symmetric or antisymmetric under each of those swaps, which splits the eigenvalue problem into small independent pieces.
Solving each piece (the algebra is routine, so only the results are shown) gives eigenvalues with orthogonal eigenvectors
is the constant mode, zero frequency, as always. oscillates only between the two low-degree vertices and . and both sit at the top eigenvalue , the fastest disagreement the graph can support, one splitting the high-degree pair from the low-degree pair, the other splitting the two high-degree vertices from each other.
Take a signal, say a temperature reading at each vertex: . Its graph Fourier transform is :
The dominant coefficient is , the mean level of the signal, exactly as the DC term dominates a smooth continuous signal. The two coefficients are comparatively small, meaning the signal doesn’t disagree much between the high-degree pair or between the low-degree pair, most of the actual variation is captured by the low and mid frequency terms.
Low-pass filtering. Attenuating the high-frequency coefficients and reconstructing is exactly what a graph low-pass filter does. Zeroing out the terms entirely and inverting:
The sharp local disagreements are smoothed out while the overall shape of the signal (high near vertices 1,2, tapering toward 3,4) survives. This is the same operation as blurring an image, just performed on an arbitrary graph instead of a pixel grid.
Part 5: filtering is diffusion
The low-pass filter above was done by hand, picking which coefficients to zero out. There’s a more principled way to choose the attenuation, and it comes from the same operator playing a third role: governing diffusion.
The continuous heat equation describes how heat spreads out over time. Solved in the Fourier basis, each mode decays independently: , high-frequency components (large ) die out fast, low-frequency components persist. That’s why heat diffusion looks like blurring: it’s a low-pass filter that runs continuously in time rather than being applied in one discrete step.
The graph version is identical in structure. The graph heat equation has solution , and expanding in the eigenbasis,
Each graph-frequency component decays at a rate set by its own eigenvalue, exactly mirroring the continuous case term for term. Letting this run for a short time is a low-pass filter, a soft, continuously tunable version of the hard cutoff used in the worked example above: instead of zeroing high-frequency coefficients outright, they’re scaled down by , with larger suppressing more of the spectrum. Graph filtering and graph diffusion aren’t two separate applications sitting next to each other, they’re the same computation, viewed either as a signal-processing operation or as a physical process running on the graph.
Where the analogy breaks
The comparison holds up remarkably well, but it isn’t perfect. The circle has translation symmetry: shifting a function and then Fourier transforming gives the same result as transforming and then shifting, and this is exactly why the same basis works everywhere on the circle regardless of where you start counting. Most graphs have no such symmetry (the diamond graph example only had it because of its particular automorphisms), so the graph Fourier basis is tied to the specific graph you built it from. There’s no universal graph-frequency basis the way there’s a universal continuous one, every graph gets its own, computed from its own Laplacian. The idea generalises cleanly; the specific basis functions do not.