Basic operators and adjoints |

The inverse of any polynomial reverberates forever, although it might
drop off fast enough for any practical need. On the other hand, a
rational filter can suddenly drop to zero and stay there. Let us look
at a popular rational filter, the rectangle or ``**box car**'':

(30) |

tmp2 = tmp + 2*nb; wt = 1.0/(2*nb-1); |

**Triangle smoothing** is rectangle smoothing
done twice. For a mathematical description of the triangle filter, we
simply square equation (29). Convolving a rectangle
function with itself many times yields a result that mathematically
tends toward a **Gaussian** function.
Despite the sharp corner on the top of the triangle function,
it has a shape remarkably similar to a Gaussian.
Convolve a triangle with itself and you see a very nice
approximation to a Gaussian (the central limit theorem).

With filtering, **end effect**s can be a nuisance, especially on space axes. Filtering
increases the length of the data, but people generally want to keep
input and output the same length (for various practical reasons),
especially on a space axis. Suppose the
five-point signal is smoothed using the `boxconv()`
program with the three-point smoothing filter . The output
is points long, namely,
. We could simply
abandon the points off the ends, but I like to **fold** them back in,
getting instead
. An advantage of the folding is
that a constant-valued signal is unchanged by the smoothing. Folding is
desirable because a smoothing filter is a low-pass filter that
naturally should pass the lowest frequency without
distortion. The result is like a wave reflected by a
**zero-slope** end condition. Impulses are smoothed
into triangles except near the boundaries. What happens near the
boundaries is shown in Figure 7.

triend
Edge effects when smoothing an impulse with a triangle function.
Inputs are spikes at various distances from the edge.
Figure 7. | |
---|---|

Why this end treatment? Consider a survey of water depth in an area of the deep ocean. All the depths are strongly positive with interesting but small variations on them. Ordinarily we can enhance high-frequency fluctuations by one minus a low-pass filter, say . If this subtraction is to work, it is important that the truly cancel the near zero frequency.

Figure 7 was derived from the routine `triangle()`.

tmp1 = tmp + nb; tmp2 = tmp + 2*nb; wt = 1.0/(nb*nb); |

Basic operators and adjoints |

2014-09-27