![]() |
![]() |
![]() |
![]() | Spatial aliasing and scale invariance | ![]() |
![]() |
Figure 1 shows three plane waves recorded on five channels and the interpolated data.
![]() |
---|
lace3
Figure 1. Left is five signals, each showing three arrivals. With the data shown on the left (and no more), the signals have been interpolated. Three new traces appear between each given trace, as shown on the right. |
![]() ![]() ![]() |
A PEF is like a differential equation.
The more plane-wave solutions you expect,
the more lags you need on the data.
Returning to Figure 1,
the filter must cover four traces (or more)
to enable it to predict three plane waves.
In this case,
na=(9,4).
As usual, the spike on the 2-D PEF is at
center=(5,1).
We see the filter is expanded by a factor of
jump=4.
The data size is
nd=(75,5)
and gap=0.
Before looking at the code
lace
for estimating the PEF,
it might be helpful to recall the basic utilities
line2cart and
cart2line
for conversion between a multidimensional space and
the helix filter lag.
We need to sweep across the whole filter
and ``stretch'' its lags on the 1-axis.
We do not need to stretch its lags on the 2-axis
because the data has not yet been interlaced by zero traces.
sf_filter lace_pef(int dim /* number of dimensions */, float *dd /* data */, int jump /* filter stretch */, int n /* data size */, int *nd /* data dimensions [dim] */, int *center /* filter center [dim] */, int *gap /* filter gap [dim] */, int *na /* filter size [dim] */) /*< estimate PEF >*/ { int *savelags, ii[SF_MAX_DIM]; /* holding place */ int ih, nh, lag0, j; sf_filter aa; aa = createhelix(dim, nd, center, gap, na); savelags = aa->lag; nh = aa->nh; aa->lag = sf_intalloc(nh); /* prepare interlaced helix */ lag0 = sf_cart2line(dim, na, center); for (ih=0; ih < nh; ih++) { /* sweep through the filter */ sf_line2cart(dim, na, ih+lag0+1, ii); for (j=0; j < dim; j++) { ii[j] -= center[j]; } ii[0] *= jump; /* interlace on 1-axis */ aa->lag[ih] = sf_cart2line(dim, nd, ii); } na[0] *= jump; bound(dim, nd, nd, na, aa); /* define aa->mis */ na[0] /= jump; find_pef(n, dd, aa, nh*2); /* estimate aa coefficients */ free(aa->lag); aa->lag = savelags; /* restore filter lags */ return aa; } |
After the PEF has been found, we can get missing data in
the usual way with with module
mis2 .
![]() |
![]() |
![]() |
![]() | Spatial aliasing and scale invariance | ![]() |
![]() |