NAME
stft - routine to provide a time - frequency representation
of input seismic data using a short time Fourier Transform
technique. This approach allows the input data to be
resolved in terms of not just frequency and amplitude, but
frequency, amplitude, time and space.
SYNOPSIS
stft [ -Nntap ] [ -Ootap ] [ -Tempttap ] [ -nsnstr ] [
-nenetr ] [ -rsnrst ] [ -renred ] [ -snrst ] [ -enred ] [
-nwinsamp ] [ -TV ] [ -R ] [ -V ] [ -? or -h or -help ]
DESCRIPTION
stft computes a time-frequency spectrum for each input trace
using a short time Fourier transform algorithm. The program
output is collections of sub-band traces. Two output
arrangements are possible:
Sub-band Records [the default]
will see N output sub-band records for each input record.
The magnitude of N is a function of the command line parame-
ter -nwin, [N = nwin / 2]. Each sub-band will contain
information from a different range of frequencies. The
sub-bandwidth is a function of the input dataset Nyquist
frequency. There will be N equally spaced sub-bands between
zero Hertz and Nyquist. The sub-bands contain band limited
data arranged such that the sample values for the first half
of the trace are amplitude and the last half phase [as in
output from USP routines fft2da or fftxy]. You will see
upon viewing a record transformed in this manner that the
amplitude information for a given sub-band is distributed
temporally and spatially within the record. This allows the
processer to realize where, in time and space, induvidual
frequency components are located. This temporal localiza-
tion of frequency information is not available through a
classical FFT of trace data.
Time - Frequency Spectra [-TV option]
There will be as many output records as there are input
traces. Each output record will contain N traces [the
number of sub-bands from above]. The first half of each
output trace contains the amplitude spectra and the last
half the phase.
stft allows for localization in time, space and frequency
of unwanted [or wanted] signal and the removal [or enhance-
ment] of that signal within the data. The ability to effect
a given frequency band over a small range of time and offset
makes possible filtering that would not be possible using a
full trace FFT or even full record FK transform. For
example, in marine data the water column is alive with
energy bouncing between the seafloor and sea surface at a
very diagnostic period. Since energy travelling in this
medium is not suffering the frequency dependant attenuation
that affects energy travelling through the earth, it has a
diagnositic signature on a time-frequency display of the
data. There will be a couple of sub-bands where an event of
water column periodicity is seen to exist over the whole
band showing little attenuation with time. These arrivals
can be removed from the data by treating only the sub-bands
affected thus vastly attenuating water column reverbation at
little cost to the underlying data.
stft gets both its data and its parameters from command line
arguments. These arguments specify the input, output, the
temporary disk buffer [if needed], the temporal FFT window
length in samples, the start and end traces, start and end
records, start and end sample times, the inverse transform
flag, the time - frequency output flag and verbose printout,
if desired.
Command line arguments
-N ntap [default: stdin]
Enter the input data set name or file immediately after
typing -N unless the input is from a pipe in which case
the -N entry must be omitted. This input file should
include the complete path name if the file resides in a
different directory. Example -N/b/vsp/dummy tells the
program to look for file 'dummy' in directory '/b/vsp'.
-O otap [default: stdout]
Enter the output data set name or file immediately
after typing -O. This output file is not required when
piping the output to another process. The output data
set also requires the full path name (see above).
-Temp ttap [default: not used]
Enter the temporary disk buffer data set name or file
immediately after typing -Temp. This buffer file will
only be used if there is not enough local RAM to run
the program.
-s ist [default: 0]
Enter the start time in the temporal units of the data
[milliseconds for millisecond data, microseconds for
microsecond data].
-e iend [default: all]
Enter the end time in the temporal units of the data
[milliseconds for millisecond data, microseconds for
microsecond data].
-ns ns [default: 1]
Enter the start trace number.
-ne ne [default: all]
Enter the end trace number.
-rs irs [default: 1]
Enter start record number.
-re ire [default: all]
Enter end record number.
-nwin nwin [default: 32]
Enter then number of samples in the fft window. The
default, and for now the minimum, is 32 samples. If
you want to make this bigger do so in increments of
two. (i.e. 64, 128 etc). The number of frequency sub-
bands will be the number of samples in this window / 2.
-R Enter the command line argument '-R' to perform an
inverse short time Fourier transform on the input data.
-TF Enter the command line argument '-TF' to output a time
- frequency spectrum for each input trace. The default
is to output [nwin/2] sub-band records for each input
record.
-V Enter the command line argument '-V' to get additional
printout.
-? or -h or -help
Enter the command line argument '-?' or -h or -help
to get online help. The program terminates after the
help screen is printed.
DISCUSSION
The following trace - wise algorithm is implimented in stft
. An nwin sample window is positioned at the start of the
trace. The samples falling within this window are weighted
using a Gaussian operator. The weighted samples are
transformed using an FFT. The resulting amplitude and phase
spectra are output for the central time only of the window.
The window is moved down one sample and the process
repeated. The inverse is acquired by retrieving the ampli-
tude and phase spectra at a given sample, performing an
inverse FFT, and outputing the central amplitude at the out-
put time.
BUGS
Although not technically a bug, the following is viewed as
such by some. This routine, although a trace independant
operation, has been implemented as a two dimensional process
in it's default mode. For this reason it is expecting an
input dataset with more than 1 trace per record. If you
wish to run this routine on stacked data do one of two
things. Firstly you could use program utop and reverse the
line header entries for NumRec and NumTrc so that the stack
looks like a single record of many traces. Alternatively
you could use the routine rwindow to subdivide the input
stack into a selection of padded records.
SEE ALSO
stft_mute(1)
AUTHOR
[A. Vassiliou: Socon 422-3749, USP implimentation P.G.A.
Garossino Socon 422-3932].
COPYRIGHT
copyright 2001, Amoco Production Company
All Rights Reserved
an affiliate of BP America Inc.
Man(1) output converted with
man2html