TKEO {seewave} | R Documentation |
Teager-Kaiser energy tracking operator
Description
This function computes the Teager-Kaiser energy operator.
Usage
TKEO(wave, f, channel = 1, m = 1, M = 1, plot = TRUE,
xlab = "Time (s)", ylab = "Energy",
type = "l", bty = "l", ...)
Arguments
wave |
an R object. |
f |
sampling frequency of |
channel |
channel of the R object, by default left channel (1). |
m |
a numeric vector of length 1 for the exponent parameter. See details. |
M |
a numeric vector of length 1 for the lag parameter. See details. |
plot |
logical, if |
xlab |
Label of time x-axis. |
ylab |
Label of energy y-axis. |
type |
if |
bty |
the type of box to be drawn around the energy plot. |
... |
other |
Details
The discrete version of the Teager-Kaiser operator is computed
according to:
y_{n} = x_{n}^{2/m} - (x_{n-M} \times x_{n+M})^{1/m}
,
with m the exponent parameter and M the lag parameter
which both are usually equal to 1 for a conventional operator.
The Teaser-Kaiser operator can be used to track amplitude modulations (AM) and/or frequency modulations (FM).
See examples.
Value
This function returns a two-column matrix, the first column is
time and the second column includes the successive energy values.
m/2 NA values are added at the start and end of the vector.
Author(s)
Jerome Sueur
References
Kvedalen, E. (2003). Signal processing using the Teager Energy Operator and other nonlinear operators. University of Oslo, Department of Informatics, PhD Thesis, x + 100 p.
See Also
Examples
op <- par(mfrow=c(2,1))
## sinusoid AM
s1 <- synth(f=8000, d=0.1, cf=200, am=c(100,10), output="Wave")
oscillo(s1)
TKEO(s1)
## linear AM decrease
s2 <- synth(f=8000, d=0.1, cf=200, shape="decr", output="Wave")
oscillo(s2)
TKEO(s2)
## sinusoid FM
s3 <- synth(f=8000, d=0.1, cf=200, fm=c(150,50,0,0,0), output="Wave")
oscillo(s3)
TKEO(s3)
## linear FM increase
s4 <- synth(f=8000, d=0.1, cf=200, fm=c(0,0,600,0,0), output="Wave")
oscillo(s4)
TKEO(s4)
## AM and FM
s5 <- synth(f=8000, d=0.1, cf=200, am=c(100,10), fm=c(150,50,0,0,0), output="Wave")
oscillo(s5)
TKEO(s5)
par(op)