Low-pass, high-pass, band-pass, and stop-pass filtering
Applies low-pass, high-pass, band-pass, or stop-pass filtering to y
with frequencies (or periods) supplied by the user.
pass.filt(y, W, type = c("low", "high", "stop", "pass"), method = c("Butterworth", "ChebyshevI"), n = 4, Rp = 1)
y |
a |
W |
a |
type |
a |
method |
a |
n |
a |
Rp |
a |
The input data (y
) has the mean value subtracted and is then padded via reflection at the start and the end to a distance of twice the maximum period. The padded data and the filter are passed to filtfilt
after which the data are unpadded and returned afer the mean is added back.
The argumement W
can be given in either frequency between 0 and 0.5 or, for convenience, period (minimum value of 2). For low-pass and high-pass filters, W
must have a length of one. For low-pass and high-pass filters W
must be a two-element vector (c(low, high)
) specifying the lower and upper boundaries of the filter.
Because this is just a wrapper for casual use with tree-ring data the frequencies and periods assume a sampling frequency of one. Users are encouraged to build their own filters using the signal
package.
A filtered vector.
Andy Bunn. Patched and improved by Mikko Korpela.
data("co021") x <- na.omit(co021[, 1]) # 20-year low-pass filter -- note freq is passed in bSm <- pass.filt(x, W=0.05, type="low", method="Butterworth") cSm <- pass.filt(x, W=0.05, type="low", method="ChebyshevI") plot(x, type="l", col="grey") lines(bSm, col="red") lines(cSm, col="blue") # 20-year high-pass filter -- note period is passed in bSm <- pass.filt(x, W=20, type="high") plot(x, type="l", col="grey") lines(bSm, col="red") # 20 to 100-year band-pass filter -- note freqs are passed in bSm <- pass.filt(x, W=c(0.01, 0.05), type="pass") cSm <- pass.filt(x, W=c(0.01, 0.05), type="pass", method="ChebyshevI") plot(x, type="l", col="grey") lines(bSm, col="red") lines(cSm, col="blue") # 20 to 100-year stop-pass filter -- note periods are passed in cSm <- pass.filt(x, W=c(20, 100), type="stop", method="ChebyshevI") plot(x, type="l", col="grey") lines(cSm, col="red")
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.