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); for (i=0; i < nx; i++) { x[o+i*d] = (tmp[i+1] - tmp2[i])*wt; } |
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 effects 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
Figure 7. Edge effects when smoothing an impulse with a triangle function. Inputs are spikes at various distances from the edge. | |
---|---|
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); for (i=0; i < nx; i++) { x[o+i*d] = (2.*tmp1[i] - tmp[i] - tmp2[i])*wt; } |
Basic operators and adjoints |