| tfestimate {gsignal} | R Documentation |
Transfer Function Estimate
Description
Finds a transfer function estimate for signals.
Usage
tfestimate(
x,
window = nextpow2(sqrt(NROW(x))),
overlap = 0.5,
nfft = ifelse(isScalar(window), window, length(window)),
fs = 1,
detrend = c("long-mean", "short-mean", "long-linear", "short-linear", "none")
)
tfe(
x,
window = nextpow2(sqrt(NROW(x))),
overlap = 0.5,
nfft = ifelse(isScalar(window), window, length(window)),
fs = 1,
detrend = c("long-mean", "short-mean", "long-linear", "short-linear", "none")
)
Arguments
x |
input data, specified as a numeric vector or matrix. In case of a vector it represents a single signal; in case of a matrix each column is a signal. |
window |
If |
overlap |
segment overlap, specified as a numeric value expressed as a multiple of window or segment length. 0 <= overlap < 1. Default: 0.5. |
nfft |
Length of FFT, specified as an integer scalar. The default is the
length of the |
fs |
sampling frequency (Hertz), specified as a positive scalar. Default: 1. |
detrend |
character string specifying detrending option; one of:
|
Details
tfestimate uses Welch's averaged periodogram method.
Value
A list containing the following elements:
freqvector of frequencies at which the spectral variables are estimated. If
xis numeric, power from negative frequencies is added to the positive side of the spectrum, but not at zero or Nyquist (fs/2) frequencies. This keeps power equal in time and spectral domains. Ifxis complex, then the whole frequency range is returned.transNULL for univariate series. For multivariate series, a matrix containing the transfer function estimates between different series. Column
i + (j - 1) * (j - 2)/2ofcohcontains the cross-spectral estimates between columnsiandjofx, wherei < j.
Note
The function tfestimate (and its deprecated alias tfe)
is a wrapper for the function pwelch, which is more complete and
more flexible.
Author(s)
Peter V. Lanspeary, pvl@mecheng.adelaide.edu.au.
Conversion to R by Geert van Boxtel, G.J.M.vanBoxtel@gmail.com.
See Also
Examples
fs <- 1000
f <- 250
t <- seq(0, 1 - 1/fs, 1/fs)
s1 <- sin(2 * pi * f * t) + runif(length(t))
s2 <- sin(2 * pi * f * t - pi / 3) + runif(length(t))
rv <- tfestimate(cbind(s1, s2), fs = fs)
plot(rv$freq, 10*log10(abs(rv$trans)), type="l", xlab = "Frequency",
ylab = "Tranfer Function Estimate (dB)", main = colnames((rv$trans)))
h <- fir1(30, 0.2, window = rectwin(31))
x <- rnorm(16384)
y <- filter(h, x)
tfe <- tfestimate(cbind(x, y), 1024, fs = 500)
plot(tfe$freq, 10*log10(abs(tfe$trans)), type="l", xlab = "Frequency",
ylab = "Tranfer Function Estimate (dB)", main = colnames((tfe$trans)))