Because of the massive increase in the number of filter coefficients,
allowing these many filters
takes us from overdetermined to very undetermined.
We can estimate all these filter coefficients
by the usual deconvolution fitting goal (
)
| (15) |
| (16) |
Experience with missing data in Chapter
shows that when the roughening operator is a differential operator,
the number of iterations can be large.
We can speed the calculation immensely by ``preconditioning''.
Define a new variable
by
and insert it into (16) to get
the equivalent preconditioned system of goals.
| (17) | ||
| (18) |
The fitting (17) uses the operator .For we can use subroutine
nhconest()
;
for the smoothing operator we can use nonstationary
polynomial division
with operator npolydiv():
Figure 15 shows a synthetic data example using these programs. As we hope for deconvolution, events are compressed. The compression is fairly good, even though each event has a different spectrum. What is especially pleasing is that satisfactory results are obtained in truly small numbers of iterations (about three). The example is for two free filter coefficients (1,a1,a2) per output point. The roughening operator was taken to be (1,-2,1) which was factored into causal and anticausal finite difference.
![]() |
I hope also to find a test case with field data, but experience in seismology is that spectral changes are slow, which implies unexciting results. Many interesting examples should exist in two- and three-dimensional filtering, however, because reflector dip is always changing and that changes the spatial spectrum.
In multidimensional space, the smoothing filter can be chosen with interesting directional properties. Sergey, Bob, Sean and I have joked about this code being the ``double helix'' program because there are two multidimensional helixes in it, one the smoothing filter, the other the deconvolution filter. Unlike the biological helixes, however, these two helixes do not seem to form a symmetrical pair.
the inverse operator to
npolydiv
?
Do they commute?
. HINTS:
Do not try to write all the matrix elements.
Instead draw short lines to indicate rows or columns.
As a ``warm up'' consider a simpler case where one filter
is used on the first half of the data and another filter
for the other half.
Then upgrade that solution from two to about ten filters.