Welcome to roadstat.com on July 5 2009.
This is an internet experiment running to monitor browsing habbits of individuals through wikipedia contents.

Circular convolution

From Wikipedia, the free encyclopedia

Jump to: navigation, search
This article contains special characters that may not render correctly in an IE browser. Without proper rendering support, you may see empty boxes instead of Unicode.

For a periodic function xT(t), with period T, the convolution with another function, h(t), is also periodic, and can be expressed in terms of integration over a finite interval as follows:


\begin{align}
x_T(t) * h(t)\quad &\stackrel{\mathrm{def}}{=} \ \int_{-\infty}^{\infty} h(\tau)\cdot x_T(t - \tau)\,d\tau \\
&= \int_{t_o}^{t_o+T} h_T(\tau)\cdot x_T(t - \tau)\,d\tau,
\end{align}
[1]

where to is an arbitrary parameter, and hT(t) is a periodic extension of h, defined by:

h_T(t) \ \stackrel{\mathrm{def}}{=} \ \sum_{k=-\infty}^{\infty} h(t - kT) = \sum_{k=-\infty}^{\infty} h(t + kT).

When xT(t) is expressed as the periodic extension of another function, x, this convolution is sometimes referred to as a circular convolution of functions h and x.

Contents

[edit] Discrete sequences

Similarly, for discrete sequences and period N, we can write the circular convolution of functions h and x as:


\begin{align}
x_N[n] * h[n] \ &\stackrel{\mathrm{def}}{=} \ \sum_{m=-\infty}^{\infty} h[m] \cdot x_N[n-m] \\
&= \sum_{m=-\infty}^{\infty} \left( h[m] \cdot \sum_{k=-\infty}^{\infty} x[n -m -kN] \right).\,
\end{align}

This corresponds to matrix multiplication, and the kernel of the integral transform is a circulant matrix.

[edit] Example

A case of great practical interest is illustrated in the figure. The duration of the x sequence is N (or less), and the duration of the h sequence is significantly less. Then many of the values of the circular convolution are identical to values of x[n]∗h[n],  which is actually the desired result when the h sequence is a finite impulse response (FIR) filter. Furthermore, the circular convolution is very efficient to compute, using a fast Fourier transform (FFT) algorithm and the circular convolution theorem.

There are also methods for dealing with an x sequence that is longer than a practical value for N. The sequence is divided into segments (blocks) and processed piecewise. Then the filtered segments are carefully pieced back together. Edge effects are eliminated by overlapping either the input blocks or the output blocks. To help explain and compare the methods, we discuss them both in the context of an h sequence of length 201 and an FFT size of N=1024.

Overlapping input blocks

This method uses a block size equal to the FFT size (1024). We describe it first in terms of normal or linear convolution. When a normal convolution is performed on each block, there are start-up and decay transients at the block edges, due to the filter latency (200-samples). Only 824 of the convolution outputs are unaffected by edge effects. The others are discarded, or simply not computed. That would cause gaps in the output if the input blocks are contiguous. The gaps are avoided by overlapping the input blocks by 200 samples. In a sense, 200 elements from each input block are "saved" and carried over to the next block. This method is referred to as overlap-save[2], although the method we describe next requires a similar "save" with the output samples.


When the DFT or FFT is used, we don't have the option of not computing the affected samples, but the leading and trailing edge-effects are overlapped and added because of circular convolution. Consequently, the 1024-point inverse FFT (IFFT) output contains only 200 samples of edge effects (which are discarded) and the 824 unaffected samples (which are kept). To illustrate this, the fourth frame of the figure at right depicts a block that has been periodically (or "circularly") extended, and the fifth frame depicts the individual components of a linear convolution performed on the entire sequence. The edge effects are where the contributions from the extended blocks overlap the contributions from the original block. The last frame is the composite output, and the section colored green represents the unaffected portion.

Overlapping output blocks

This method is known as overlap-add[3]. In our example, it uses contiguous input blocks of size 824 and pads each one with 200 zero-valued samples. Then it overlaps and adds the 1024-element output blocks. Nothing is discarded, but 200 values of each output block must be "saved" for the addition with the next block. Both methods advance only 824 samples per 1024-point IFFT, but overlap-save avoids the initial zero-padding and final addition.

[edit] See also

[edit] Notes

  1. ^ Proof:
    \int_{-\infty}^{\infty} h(\tau)\cdot x_T(t - \tau)\,d\tau
    
\begin{align}
&= \sum_{k=-\infty}^{\infty} \left[\int_{t_o+kT}^{t_o+(k+1)T} h(\tau)\cdot x_T(t - \tau)\ d\tau\right] \\
&\stackrel{\tau \rightarrow \tau+kT}{=}\  \sum_{k=-\infty}^{\infty} \left[\int_{t_o}^{t_o+T} h(\tau+kT)\cdot x_T(t - \tau -kT)\ d\tau\right] \\
&= \int_{t_o}^{t_o+T} \left[\sum_{k=-\infty}^{\infty} h(\tau+kT)\cdot \underbrace{x_T(t - \tau-kT)}_{X_T(t - \tau), \text{ by periodicity}}\right]\ d\tau\\
&= \int_{t_o}^{t_o+T} \underbrace{\left[\sum_{k=-\infty}^{\infty} h(\tau+kT)\right]}_{\stackrel{\mathrm{def}}{=} \ h_T(\tau)}\cdot x_T(t - \tau)\ d\tau \quad \quad \mbox{(QED)}
\end{align}
  2. ^ Rabiner 1975, pp 65-67.
  3. ^ Rabiner 1975, pp 63-65.

[edit] References

  • Rabiner, Lawrence R.; Gold, Bernard (1975). Theory and application of digital signal processing. Englewood Cliffs, N.J.: Prentice-Hall. pp. 63–67. ISBN 0-13-914101-4. .
  • Oppenheim, Alan V.; Schafer, Ronald W.; Buck, John A. (1999). Discrete-time signal processing. Upper Saddle River, N.J.: Prentice Hall. ISBN 0-13-754920-2. .
Personal tools
Languages

Visit joltnews for the latest headlines
Visit bloit.com for company information
Geed Media does computer consulting on long island.
This page viewed times. See Logs