Circular vs linear convolution

Consider signals x[n] and h[n], of length N_x and N_h samples, respectively. Circular and linear convolution are different ways of convolving these signals together. Circular convolution is associated with multiplying N-length DFTs, meaning that either x or h, whichever is shorter, is padded to the length of the other – let’s call this length N samples. Multiplying their spectra causes output samples “beyond” N to wrap around into the start of the analysis window. This is known as time-domain aliasing, since the output must be N samples long.

In contrast, linear convolution is implemented in the time domain to produce a signal of length N_x + N_h -1.

Circular convolution can lead to the same result as linear convolution if the two time-domain signals are first padded to a length N_x + N_h -1 samples, before being transformed via the DFT into their frequency domain representations. Indeed, this is exactly how so-called ‘fast’ or ‘frequency domain’ convolution is achieved.

Open full-screen ↗