manpagez: man pages & more
man spectrum1d(1)
Home | html | info | man
spectrum1d(1)                         GMT                        spectrum1d(1)




NAME

       spectrum1d  -  Compute  auto-  [and  cross- ] spectra from one [or two]
       time-series


SYNOPSIS

       spectrum1d [ table ]  -Ssegment_size] [  -C[xycnpago] ]  [   -Ddt  ]  [
       -L[h|m] ] [  -N[name_stem ] ] [  -T ] [  -W ] [ -bbinary ] [ -dnodata ]
       [ -eregexp ] [ -fflags ] [ -ggaps ] [ -hheaders ] [ -iflags ]

       Note: No space is allowed between the option flag  and  the  associated
       arguments.


DESCRIPTION

       spectrum1d  reads  X [and Y] values from the first [and second] columns
       on standard input [or x[y]file]. These values are treated as timeseries
       X(t) [Y(t)] sampled at equal intervals spaced dt units apart. There may
       be any number of lines of input. spectrum1d will  create  file[s]  con-
       taining  auto-  [and  cross-  ]  spectral  density estimates by Welchas
       method of ensemble averaging  of  multiple  overlapped  windows,  using
       standard error estimates from Bendat and Piersol.

       The  output  files have 3 columns: f or w, p, and e. f or w is the fre-
       quency or wavelength, p is the spectral density estimate, and e is  the
       one  standard  deviation error bar size. These files are named based on
       name_stem. If the -C option is used, up to  eight  files  are  created;
       otherwise  only  one  (xpower)  is  written. The files (which are ASCII
       unless -bo is set) are as follows:

       name_stem.xpower
              Power spectral density of X(t). Units of X * X * dt.

       name_stem.ypower
              Power spectral density of Y(t). Units of Y * Y * dt.

       name_stem.cpower
              Power spectral density of the coherent  output.  Units  same  as
              ypower.

       name_stem.npower
              Power  spectral  density  of  the  noise  output.  Units same as
              ypower.

       name_stem.gain
              Gain spectrum, or modulus of the transfer function. Units of  (Y
              / X).

       name_stem.phase
              Phase  spectrum,  or  phase  of the transfer function. Units are
              radians.

       name_stem.admit
              Admittance spectrum, or real  part  of  the  transfer  function.
              Units of (Y / X).

       name_stem.coh
              (Squared)  coherency spectrum, or linear correlation coefficient
              as a function of frequency. Dimensionless number in [0, 1].  The
              Signal-to-Noise-Ratio (SNR) is coh / (1 - coh). SNR = 1 when coh
              = 0.5.

       In addition, a single file with all of the above as individual  columns
       will be written to stdout (unless disabled via -T).


REQUIRED ARGUMENTS

       -Ssegment_size]
              segment_size  is  a  radix-2  number  of  samples per window for
              ensemble  averaging.  The  smallest   frequency   estimated   is
              1.0/(segment_size  * dt), while the largest is 1.0/(2 * dt). One
              standard error in power spectral density is approximately 1.0  /
              sqrt(n_data  / segment_size), so if segment_size = 256, you need
              25,600 data to get a one standard error bar of 10%.  Cross-spec-
              tral  error  bars are larger and more complicated, being a func-
              tion also of the coherency.


OPTIONAL ARGUMENTS

       table  One or more ASCII (or binary, see -bi) files holding X(t) [Y(t)]
              samples  in  the  first 1 [or 2] columns. If no files are speci-
              fied, spectrum1d will read from standard input.

       -C[xycnpago]
              Read  the  first  two  columns  of  input  as  samples  of   two
              time-series,  X(t)  and Y(t). Consider Y(t) to be the output and
              X(t) the input in a linear system with noise. Estimate the opti-
              mum  frequency response function by least squares, such that the
              noise output is minimized and the coherent output and the  noise
              output  are  uncorrelated.   Optionally  specify up to 8 letters
              from the set { x y c n p a g o } in any  order  to  create  only
              those output files instead of the default [all]. x = xpower, y =
              ypower, c = cpower, n = npower, p = phase, a = admit, g =  gain,
              o = coh.

       -Ddt   dt Set the spacing between samples in the time-series [Default =
              1].

       -L     Leave trend alone. By default, a linear trend  will  be  removed
              prior  to  the transform. Alternatively, append m to just remove
              the mean value or h to remove the mid-value.

       -N[name_stem]
              Supply an alternate name  stem  to  be  used  for  output  files
              [Default = aspectruma].  If -N is given with no argument then we
              disable the writing of individual output files and instead write
              a single table to standard output.

       -V[level] (more a|)
              Select verbosity level [c].

       -T     Disable  the  writing of a single composite results file to std-
              out.

       -W     Write Wavelength rather than frequency in column 1 of the output
              file[s] [Default = frequency, (cycles / dt)].

       -bi[ncols][t] (more a|)
              Select native binary input. [Default is 2 input columns].

       -bo[ncols][type] (more a|)
              Select native binary output. [Default is 2 output columns].

       -d[i|o]nodata (more a|)
              Replace  input  columns  that  equal  nodata with NaN and do the
              reverse on output.

       -e[~]^<i>apattern^<i>a | -e[~]/regexp/[i] (more a|)
              Only accept data records that match the given pattern.

       -f[i|o]colinfo (more a|)
              Specify data types of input and/or output columns.

       -g[a]x|y|d|X|Y|D|[col]z[+|-]gap[u] (more a|)
              Determine data gaps and line breaks.

       -h[i|o][n][+c][+d][+rremark][+rtitle] (more a|)
              Skip or produce header record(s).

       -icols[+l][+sscale][+ooffset][,^<i>a|] (more a|)
              Select input columns and transformations (0 is first column).

       -^ or just -
              Print a short message about the  syntax  of  the  command,  then
              exits (NOTE: on Windows just use -).

       -+ or just +
              Print  an extensive usage (help) message, including the explana-
              tion of any module-specific  option  (but  not  the  GMT  common
              options), then exits.

       -? or no arguments
              Print a complete usage (help) message, including the explanation
              of all options, then exits.


ASCII FORMAT PRECISION

       The ASCII output formats of numerical data are controlled by parameters
       in  your  gmt.conf file. Longitude and latitude are formatted according
       to  FORMAT_GEO_OUT,  absolute  time  is  under  the  control  of   FOR-
       MAT_DATE_OUT  and FORMAT_CLOCK_OUT, whereas general floating point val-
       ues are formatted according to FORMAT_FLOAT_OUT. Be aware that the for-
       mat  in effect can lead to loss of precision in ASCII output, which can
       lead to various problems downstream. If you  find  the  output  is  not
       written with enough precision, consider switching to binary output (-bo
       if available) or specify more decimals using the FORMAT_FLOAT_OUT  set-
       ting.


EXAMPLES

       Suppose  data.g is gravity data in mGal, sampled every 1.5 km. To write
       its power spectrum, in mGal**2-km, to the file data.xpower, use

              gmt spectrum1d data.g -S256 -D1.5 -Ndata

       Suppose in addition to data.g you have data.t, which is  topography  in
       meters  sampled  at the same points as data.g. To estimate various fea-
       tures of the transfer function, considering data.t as input and  data.g
       as output, use

              paste data.t data.g | gmt spectrum1d -S256 -D1.5 -Ndata -C > results.txt


TUTORIAL

       The  output of spectrum1d is in units of power spectral density, and so
       to get units of data-squared you must divide by delta_t, where  delta_t
       is the sample spacing.  (There may be a factor of 2 pi somewhere, also.
       If you want to be sure of the normalization, you can determine a  scale
       factor  from  Parsevalas  theorem: the sum of the squares of your input
       data should equal the sum of the squares  of  the  outputs  from  spec-
       trum1d, if you are simply trying to get a periodogram. [See below.])

       Suppose  we  simply  take  a  data  set, x(t), and compute the discrete
       Fourier transform (DFT) of the entire data set in  one  go.  Call  this
       X(f). Then suppose we form X(f) times the complex conjugate of X(f).

       P_raw(f) = X(f) * Xa(f), where the a indicates complex conjugation.

       P_raw  is  called  the periodogram. The sum of the samples of the peri-
       odogram equals the sum of the samples of the squares of x(t), by Parse-
       valas  theorem. (If you use a DFT subroutine on a computer, usually the
       sum of P_raw equals the sum of x-squared, times M, where M is the  num-
       ber of samples in x(t).)

       Each estimate of X(f) is now formed by a weighted linear combination of
       all of the x(t) values. (The weights are sometimes called atwiddle fac-
       torsa  in the DFT literature.)  So, no matter what the probability dis-
       tribution for the x(t) values is, the probability distribution for  the
       X(f)  values  approaches [complex] Gaussian, by the Central Limit Theo-
       rem.  This  means  that  the  probability  distribution  for   P_raw(f)
       approaches  chi-squared with two degrees of freedom. That reduces to an
       exponential distribution, and the variance of the estimate of P_raw  is
       proportional  to the square of the mean, that is, the expected value of
       P_raw.

       In practice if we form P_raw, the estimates are hopelessly noisy.  Thus
       P_raw  is not useful, and we need to do some kind of smoothing or aver-
       aging to get a useful estimate, P_useful(f).

       There are several different ways to do this in the literature.  One  is
       to  form  P_raw and then smooth it. Another is to form the auto-covari-
       ance function of x(t), smooth, taper and shape it, and  then  take  the
       Fourier  transform of the smoothed, tapered and shaped auto-covariance.
       Another is to form a parametric model for the  auto-correlation  struc-
       ture  in  x(t),  then  compute  the  spectrum  of that model. This last
       approach is what is done in what is called  the  amaximum  entropya  or
       aBerga or aBox-Jenkinsa or aARMAa or aARIMAa methods.

       Welchas  method is a tried-and-true method. In his method, you choose a
       segment length, -SN, so that estimates will be made  from  segments  of
       length  N.  The  frequency samples (in cycles per delta_t unit) of your
       P_useful will then be at k /(N * delta_t), where k is an  integer,  and
       you  will  get  N samples (since the spectrum is an even function of f,
       only N/2 of them are really useful). If the length of your entire  data
       set,  x(t),  is M samples long, then the variance in your P_useful will
       decrease in proportion to N/M. Thus you need to choose N <<  M  to  get
       very  low  noise  and high confidence in P_useful. There is a trade-off
       here; see below.

       There is an additional reduction in variance  in  that  Welchas  method
       uses  a  Von  Hann  spectral  window  on  each sample of length N. This
       reduces side lobe leakage and has the effect of smoothing the  (N  seg-
       ment)  periodogram  as  if  the X(f) had been convolved with [1/4, 1/2,
       1/4] prior to forming P_useful. But this slightly widens  the  spectral
       bandwidth  of each estimate, because the estimate at frequency sample k
       is now a little correlated with the estimate at frequency  sample  k+1.
       (Of  course  this would also happen if you simply formed P_raw and then
       smoothed it.)

       Finally, Welchas method also uses overlapped processing. Since the  Von
       Hann window is large in the middle and tapers to near zero at the ends,
       only the middle of the segment of length  N  contributes  much  to  its
       estimate.  Therefore  in taking the next segment of data, we move ahead
       in the x(t) sequence only N/2 points. In this  way,  the  next  segment
       gets large weight where the segments on either side of it will get lit-
       tle weight, and vice versa.  This  doubles  the  smoothing  effect  and
       ensures  that  (if  N << M) nearly every point in x(t) contributes with
       nearly equal weight in the final answer.

       Welchas method of spectral estimation has been widely used  and  widely
       studied.  It  is  very reliable and its statistical properties are well
       understood. It is highly recommended in such textbooks as aRandom Data:
       Analysis and Measurement Proceduresa by Bendat and Piersol.

       In  all problems of estimating parameters from data, there is a classic
       trade-off between resolution and  variance.  If  you  want  to  try  to
       squeeze more resolution out of your data set, then you have to be will-
       ing to accept more noise in the estimates. The same trade-off  is  evi-
       dent  here in Welchas method. If you want to have very low noise in the
       spectral estimates, then you have to choose N << M, and this means that
       you get only N samples of the spectrum, and the longest period that you
       can resolve is only N * delta_t.  So you see that  reducing  the  noise
       lowers  the  number  of spectral samples and lowers the longest period.
       Conversely, if you choose N approaching M, then you approach the  peri-
       odogram  with  its very bad statistical properties, but you get lots of
       samples and a large fundamental period.

       The other spectral estimation methods also can do a good  job.  Welchas
       method  was selected because the way it works, how one can code it, and
       its effects on statistical distributions, resolution,  side-lobe  leak-
       age,  bias, variance, etc. are all easily understood. Some of the other
       methods (e.g. Maximum  Entropy)  tend  to  hide  where  some  of  these
       trade-offs are happening inside a ablack boxa.


SEE ALSO

       gmt(1), grdfft(1)


REFERENCES

       Bendat,  J.  S., and A. G. Piersol, 1986, Random Data, 2nd revised ed.,
       John Wiley & Sons.

       Welch, P. D., 1967, The use of Fast Fourier Transform for  the  estima-
       tion  of  power  spectra:  a method based on time averaging over short,
       modified periodograms, IEEE Transactions on Audio and Electroacoustics,
       Vol AU-15, No 2.


COPYRIGHT

       2017, P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe



5.4.2                            Jun 24, 2017                    spectrum1d(1)

gmt5 5.4.2 - Generated Thu Jun 29 16:19:14 CDT 2017
© manpagez.com 2000-2025
Individual documents may contain additional copyright information.