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 |