# 14. Filtering of Data in GMT¶

The GMT programs filter1d (for
tables of data indexed to one independent variable) and
grdfilter (for data given as
2-dimensional grids) allow filtering of data by a moving-window process.
(To filter a grid by Fourier transform use
grdfft.) Both programs use an argument
**-F**<*type*><*width*> to specify the
type of process and the window’s width (in 1-D) or diameter (in 2-D).
(In filter1d the width is a length of
the time or space ordinate axis, while in
grdfilter it is the diameter of a
circular area whose distance unit is related to the grid mesh via the
**-D** option). If the process is a median, mode, or extreme value
estimator then the window output cannot be written as a convolution and
the filtering operation is not a linear operator. If the process is a
weighted average, as in the boxcar, cosine, and gaussian filter types,
then linear operator theory applies to the filtering process. These
three filters can be described as convolutions with an impulse response
function, and their transfer functions can be used to describe how they
alter components in the input as a function of wavelength.

Impulse responses are shown here for the boxcar, cosine, and gaussian filters. Only the relative amplitudes of the filter weights shown; the values in the center of the window have been fixed equal to 1 for ease of plotting. In this way the same graph can serve to illustrate both the 1-D and 2-D impulse responses; in the 2-D case this plot is a diametrical cross-section through the filter weights (Figure Impulse responses).

Although the impulse responses look the same in 1-D and 2-D, this is not
true of the transfer functions; in 1-D the transfer function is the
Fourier transform of the impulse response, while in 2-D it is the Hankel
transform of the impulse response. These are shown in Figures
Transfer functions for 1D and
2D,
respectively. Note that in 1-D the
boxcar transfer function has its first zero crossing at *f = 1*,
while in 2-D it is around \(f \sim 1.2\). The 1-D cosine transfer
function has its first zero crossing at *f = 2*; so a cosine
filter needs to be twice as wide as a boxcar filter in order to zero the
same lowest frequency. As a general rule, the cosine and gaussian
filters are “better” in the sense that they do not have the “side lobes”
(large-amplitude oscillations in the transfer function) that the boxcar
filter has. However, they are correspondingly “worse” in the sense that
they require more work (doubling the width to achieve the same cut-off wavelength).

One of the nice things about the gaussian filter is that its transfer functions are the same in 1-D and 2-D. Another nice property is that it has no negative side lobes. There are many definitions of the gaussian filter in the literature (see page 7 of Bracewell 30). We define \(\sigma\) equal to 1/6 of the filter width, and the impulse response proportional to \(\exp[-0.5(t/\sigma)^2)\). With this definition, the transfer function is \(\exp[-2(\pi\sigma f)^2]\) and the wavelength at which the transfer function equals 0.5 is about 5.34 \(\sigma\), or about 0.89 of the filter width.