psdList {IRISSeismic} | R Documentation |
Apply McNamara PSD algorithm to a seismic signal
Description
The psdList
function subsets a seismic Stream
object into a series of
shorter segments with 50% overlap and uses the McNamaraPSD
method to return a smoothed (aka binned)
Power Spectral Density (PSD) for each segment.
Usage
psdList(st)
Arguments
st |
a |
Details
A Stream
will be subset into segments depending upon the channel identifier (@stats@channel) associated
with this seismic data. The binning frequencies are also channel dependent as exemplified in
this code extract where Z
is the segment length in seconds:
alignFreq <- 0.1 if (stringr::str_detect(channel,"^L")) { Z <- 3 * 3600 loFreq <- 0.001 hiFreq <- 0.5 * tr_merged@stats@sampling_rate } else if (stringr::str_detect(channel,"^M")) { Z <- 2 * 3600 loFreq <- 0.0025 hiFreq <- 0.5 * tr_merged@stats@sampling_rate } else { Z <- 3600 loFreq <- 0.005 hiFreq <- 0.5 * tr_merged@stats@sampling_rate }
Each new segment starts half way through the previous segment. (50% overlap)
Value
A list of PSD
objects is returned. Each element of the list is
an R list
object with the following elements:
freq, spec, snclq, starttime, endtime
Note: Individual PSDs have not had instrument correction applied.
Author(s)
Jonathan Callahan jonathan@mazamascience.com
References
Seismic Noise Analysis System Using Power Spectral Density Probability Density Functions (McNamara and Boaz 2005)
See Also
McNamaraPSD
,
psdList2NoiseMatrix
,
psdPlot
,
psdStatistics
,
Examples
## Not run:
# Create a new IrisClient
iris <- new("IrisClient", debug=TRUE)
# Get seismic data
starttime <- as.POSIXct("2011-05-05", tz="GMT") # 2011.125
endtime <- starttime + 1*24*3600
st <- getDataselect(iris,"IU","GRFO","--","BHE",starttime,endtime)
# Generate power spectral density for each hour long segment
psdList <- psdList(st)
# Plot uncorrected PSDs
period <- 1/psdList[[1]]$freq
plot(period, psdList[[1]]$spec, log='x', type='l',
xlab="Period (Sec)", ylab="Power (dB)",
main="Uncorrected PSDs")
for (i in seq(2:length(psdList))) {
points(period, psdList[[i]]$spec, type='l')
}
## End(Not run)