DSPRelated.com
Forums

lpc on seismic traces

Started by Henrietta Denoue May 25, 2005
Hi

Need help to use matlab's lpc (linear prediction coefficients) on
a set of seismic traces.
If data is given in a matrix where each column represents a seismic
trace (time is the vertical axis and space the horizontal) how
do I use matlab's lpc ? I am in particular interested in cases
where one trace is missing and use the lpc to give an estimate
of the missing trace.


Thanks in advance

H.

Henrietta Denoue wrote:
> Hi > > Need help to use matlab's lpc (linear prediction coefficients) on > a set of seismic traces. > If data is given in a matrix where each column represents a seismic > trace (time is the vertical axis and space the horizontal) how > do I use matlab's lpc ? I am in particular interested in cases > where one trace is missing and use the lpc to give an estimate > of the missing trace.
Let's say there is one missing column (trace) in your matrix. You have calculated the LPC coefficients for all the other columns. How do you intend to restore the missing column from the LPC coefficients of the other columns? If the rows are measurements at equal time but different spaces, and the order of the columns represents the space (ie. the columns next to the missing one also represent the measurements closest in space), wouldn't it be sensible to interpolate the missing column via row interpolation? Why do you need the LPC coefficients at all? Just out of curiosity: how big is the matrix? Regards, Andor
Andor wrote:
> Henrietta Denoue wrote: > >>Hi >> >>Need help to use matlab's lpc (linear prediction coefficients) on >>a set of seismic traces. >>If data is given in a matrix where each column represents a seismic >>trace (time is the vertical axis and space the horizontal) how >>do I use matlab's lpc ? I am in particular interested in cases >>where one trace is missing and use the lpc to give an estimate >>of the missing trace. > > > Let's say there is one missing column (trace) in your matrix. You have > calculated the LPC coefficients for all the other columns. How do you > intend to restore the missing column from the LPC coefficients of the > other columns? > > If the rows are measurements at equal time but different spaces, and > the order of the columns represents the space (ie. the columns next to > the missing one also represent the measurements closest in space), > wouldn't it be sensible to interpolate the missing column via row > interpolation? Why do you need the LPC coefficients at all? > > Just out of curiosity: how big is the matrix? > > Regards, > Andor >
Thanks for the reply Andor The point was just to compare the result of an interpolation between the adjacent rows of a matrix and the lpc. But thats not all the problem. A major issue is how to get rid of noise. Let's say some traces are contaminated with heavy noise from some nearby source (a boat, a rigg ...) or some natural phenomenon (local waves, called swell noise). As I understand matlabs lpc takes some samples on a signal and predict the next sample based on previous ones. I am not interested in predicting the noise on one trace but how the noise is spread over a series of traces. Given previous traces, can I "predict" how the noisy ones should have been like and reconstruct them ? Seismic traces before stack processing are usually delayed version of the previous ones, but not quite like. My question is then how shall I arrange my matrix so that given some previous traces I can solve for the next trace. When this is found I would then substract the real one from the predicted one to get an estimate of the error. Usually the matrix is 1500x1200, that is 1200 traces. Regards H.

Henrietta Denoue wrote:
> Andor wrote: > > Henrietta Denoue wrote: > > > >>Hi > >> > >>Need help to use matlab's lpc (linear prediction coefficients) on > >>a set of seismic traces. > >>If data is given in a matrix where each column represents a seismic > >>trace (time is the vertical axis and space the horizontal) how > >>do I use matlab's lpc ? I am in particular interested in cases > >>where one trace is missing and use the lpc to give an estimate > >>of the missing trace. > > > > > > Let's say there is one missing column (trace) in your matrix. You have > > calculated the LPC coefficients for all the other columns. How do you > > intend to restore the missing column from the LPC coefficients of the > > other columns? > > > > If the rows are measurements at equal time but different spaces, and > > the order of the columns represents the space (ie. the columns next to > > the missing one also represent the measurements closest in space), > > wouldn't it be sensible to interpolate the missing column via row > > interpolation? Why do you need the LPC coefficients at all? > > > > Just out of curiosity: how big is the matrix? > > > > Regards, > > Andor > > > > Thanks for the reply Andor > > The point was just to compare the result of an interpolation > between the adjacent rows of a matrix and the lpc. > But thats not all the problem. A major issue is how to get rid > of noise. Let's say some traces are contaminated with heavy > noise from some nearby source (a boat, a rigg ...) or > some natural phenomenon (local waves, called swell noise). > As I understand matlabs lpc takes some samples on a signal > and predict the next sample based on previous ones. I am not > interested in predicting the noise on one trace but how the noise > is spread over a series of traces. Given previous traces, > can I "predict" how the noisy ones should have been like > and reconstruct them ? Seismic traces before stack processing > are usually delayed version of the previous ones, but not quite > like. My question is then how shall I arrange my matrix so that > given some previous traces I can solve for the next trace. > When this is found I would then substract the real one from > the predicted one to get an estimate of the error. > > Usually the matrix is 1500x1200, that is 1200 traces. > > Regards > > H.
I don't know how to achieve what you want, but somehow I think you might want to work in (w,x) domain, i.e. that you Fourier transform the traces to frequency domain. As for noise, it depends on what type of data you work with. If you work with streamers and Common Shot Gathers, you should be OK. Analysing noise on Common Reciever Gathers may be a bit awkward, in that they have been collected over a larger time span. Rune
Henrietta Denoue wrote:
> Thanks for the reply Andor > > The point was just to compare the result of an interpolation > between the adjacent rows of a matrix and the lpc.
So you have another interpolation algorithm (polynomial probably?) and want to compare its performance with interpolation via LPC, right? And we are talking about _row_ interpolation (that is interpolation in space domain)? I guess you are making sure to properly align the rows to compensate for the delay. A step further would use a deconvolution algorithm to align the time domain signals using a linear filter (which includes the delay and frequency dependent gain). You can use your first trace as a reference and fit the best linear filter that transforms the first trace to the other traces.
> But thats not all the problem. A major issue is how to get rid > of noise. Let's say some traces are contaminated with heavy > noise from some nearby source (a boat, a rigg ...) or > some natural phenomenon (local waves, called swell noise).
I'm not familiar with the type of noise on seismic traces. Is it wideband? How long is the duration? For burst-type noise, LPC can be used to reconstruct the signal destroyed by the burst. For wideband, you can use some kind of spectral subtraction algorithm, or perhaps your signal of interest is contained in a small bandwidth? In which case you could use some pre-filtering to increase the SNR.
> As I understand matlabs lpc takes some samples on a signal > and predict the next sample based on previous ones. I am not > interested in predicting the noise on one trace but how the noise > is spread over a series of traces. Given previous traces, > can I "predict" how the noisy ones should have been like > and reconstruct them ? Seismic traces before stack processing > are usually delayed version of the previous ones, but not quite > like. My question is then how shall I arrange my matrix so that > given some previous traces I can solve for the next trace. > When this is found I would then substract the real one from > the predicted one to get an estimate of the error. > > Usually the matrix is 1500x1200, that is 1200 traces.
And each trace is 1500 samples long. In what frequency range (compared to the sampling frequency) is the signal of interest? Regards, Andor