Nonstationarity: patching |
is the operator that absorbs (by prediction error) the plane waves and absorbs noises and is a small scalar to be chosen. The difference between and is the spatial order of the filters. Because we regard the noise as spatially uncorrelated, has coefficients only on the time axis. Coefficients for are distributed over time and space. They have one space level, plus another level for each plane-wave segment slope that we deem to be locally present. In the examples here the number of slopes is taken to be two. Where a data field seems to require more than two slopes, it usually means the ``patch'' could be made smaller.
It would be nice if we could forget about the goal (10) but without it the goal (9), would simply set the signal equal to the data . Choosing the value of will determine in some way the amount of data energy partitioned into each. The last thing we will do is choose the value of , and if we do not find a theory for it, we will experiment.
The operators and can be thought of as ``leveling'' operators. The method of least-squares sees mainly big things, and spectral zeros in and tend to cancel spectral lines and plane waves in and . (Here we assume that power levels remain fairly level in time. Were power levels to fluctuate in time, the operators and should be designed to level them out too.)
None of this is new or exciting in one dimension, but I find it exciting in more dimensions. In seismology, quasi-sinusoidal signals and noises are quite rare, whereas local plane waves are abundant. Just as a short one-dimensional filter can absorb a sinusoid of any frequency, a compact two-dimensional filter can absorb a wavefront of any dip.
To review basic concepts, suppose we are in the one-dimensional frequency domain. Then the solution to the fitting goals (10) and (9) amounts to minimizing a quadratic form by setting to zero its derivative, say
(11) |
The analytic solutions in equations (12) and (13) are valid in 2-D Fourier space or dip space too. I prefer to compute them in the time and space domain to give me tighter control on window boundaries, but the Fourier solutions give insight and offer a computational speed advantage.
Let us express the fitting goal in the form needed in computation.
void signoi_lop (bool adj, bool add, int n1, int n2, float *data, float *sign) /*< linear operator >*/ { sf_helicon_init (nn); sf_polydiv_init (nd, ss); sf_adjnull(adj,add,n1,n2,data,sign); sf_helicon_lop (false, false, n1, n1, data, dd); sf_solver_prec(sf_helicon_lop, sf_cgstep, sf_polydiv_lop, nd, nd, nd, sign, dd, niter, eps, "verb", verb, "end"); sf_cgstep_close(); nn++; ss++; } |
Nonstationarity: patching |