is an operation performed on two signals which involves multiplying
one signal by a delayed or shifted version of another signal,
integrating or averaging the product, and repeating the process for
different delays. Convolution is a useful process because it
accurately describes some effects that occur widely in scientific
measurements, such as the influence of a frequency filter on an
electrical signal or of the spectral bandpass of a spectrometer on
the shape of a recorded optical spectrum.
Figure 11. Fourier convolution is used here to
determine how the optical spectrum in Window 1 (top left) will
appear when scanned with a spectrometer whose slit function
(spectral resolution) is described by the Gaussian function in
Window 2 (top right). The Gaussian function has already been
rotated so that its maximum falls at x=0. The resulting
convoluted optical spectrum (bottom center) shows that the two
lines near x=110 and 120 will not be resolved but the line at
x=40 will be partly resolved. Fourier convolution is used in
this way to correct the analytical curve non-linearity caused by
spectrometer resolution, in the “Tfit”
method for absorption spectroscopy.
practice, the calculation is usually performed by point-by-point
multiplication of the two signals in the Fourier domain. First,
the Fourier transform of each signal is obtained. Then the two
Fourier transforms are multiplied point-by-point by the rules for
complex multiplication and the result is then inverse Fourier
transformed. Fourier transforms are usually expressed in terms of
complex numbers, with real and imaginary parts; if the Fourier
transform of the first signal is a + ib,
and the Fourier transform of the second signal is c + id, then the product of the two Fourier
transforms is (a + ib)(c + id)
= (ac - bd) + i(bc +
ad). Although this seems
to be a round-about method, it turns out to be faster then
the shift-and-multiply algorithm when the number of points in the
signal is large. Convolution can be used as a powerful and general
algorithm for smoothing and differentiation.
Fourier convolution can also be used as a very general algorithm
for the smoothing and differentiation of digital signals, by
convoluting the signal with a (usually) small set of numbers
representing the convolution vector. Smoothing is performed by
convolution with sets of positive numbers, e.g. [1 1 1] for a
3-point boxcar. Convolution with [–1 1] computes a first
derivative; [1 -2 1] computes a second derivative. Successive
convolutions by Conv1 and then Conv2 is equivalent to one
convolution with the convolution of Conv1 and Conv2. First
differentiation with smoothing is done by using a convolution
vector in which the first half of the coefficients are negative
and the second half are positive (e.g.[-1 -2 0 2 1]).
SPECTRUM, the freeware
signal-processing application that accompanies this tutorial,
includes convolution and auto-correlation (self-convolution)
can be used to perform "shift-and-multiply" convolution for
small data sets (for example,MultipleConvolution.xls or MultipleConvolution.xlsxfor Excel and MultipleConvolutionOO.ods
for Calc), but for larger data sets the performance is much slower
that Fourier convolution (which is much easier done in Matlab or
Octave than in spreadsheets). Matlab and Octave have a built-in
function for convolution of two vectors: conv.
This function can be used to create very general type of filters and
smoothing functions, such as sliding-average
and triangular smooths. For example,
ysmoothed=conv(y,[1 1 1 1 1],'same')./5;
smooths the vector y with a 5-point unweighted sliding average
(boxcar) smooth, and
ysmoothed=conv(y,[1 2 3 2 1],'same')./9;
smooths the vector y with a 5-point triangular smooth. The optional
argument 'same' returns the central part of the convolution that is
the same size as y.
Differentiation is carried out with smoothing by using
a convolution vector in which the first half of the
coefficients are negative and the second half are positive (e.g.[-1 0 1],[-2 -1 0 1 2], or
[-3 -2 -1 0 1 2 3]) to compute a
first derivative with increasing amounts of smoothing.
The next example creates an exponential trailing transfer function
(c), which has an effect similar to a simple RC low-pass filter, and
applies it to y.
In each of the above three examples, the result of the convolution
is divided by the sum of the convolution transfer function, in order
to insure that the convolution has a net gain of 1.000 and thus does
not effect the area under the curve of the signal. Alternatively,
you could perform the convolution yourself without using
the built-in Matlab/Octave "conv" function by multiplying the
Fourier transforms of y and c using the "fft.m"
function, and then inverse transform the result with the "ifft.m"
function. The results are essentially the same and the elapsed time
is actually slightly faster than using the conv function.
yc=ifft(fft(y).*fft(c))./sum(c); GaussConvDemo.m shows that a
Gaussian of unit height convoluted with a Gaussian of the same
width is a Gaussian with a height of 1/sqrt(2) and a width of
sqrt(2) and of equal area to the original Gaussian. (Figure
2 shows an attempt to recover the original y from the convoluted yc
by using the deconvgauss function). You can optionally add noise in
line 9 to show how convolution smooths the noise and how
deconvolution restores it. Requires gaussian.m, peakfit.m and
deconvgauss.m in path.
iSignal version 5.7 has a Shift-V
keypress that displays the menu of Fourier convolution and
deconvolution operations that allow you to convolute a Gaussian or
exponential function with the signal, or to deconvolute a Gaussian
or exponential function from the signal, and asks you for the width
or the time constant (in X units).
This page is part of "A Pragmatic
Introduction to Signal Processing", created and
maintained by Prof. Tom
O'Haver , Department of Chemistry and Biochemistry, The
University of Maryland at College Park. Comments, suggestions and
questions should be directed to Prof. O'Haver at email@example.com.
Unique visits since May 17, 2008: