Last chance! 50% off unlimited learning
Sale ends in
This function compares two distributions (e.g. two frequency spectra) by computing the Kolmogorov-Smirnov distance
ks.dist(spec1, spec2, f = NULL, mel = FALSE,
plot = FALSE, type = "l",
lty = c(1, 2), col = c(2, 4),
flab = NULL, alab = "Cumulated amplitude",
flim = NULL, alim = NULL,
title = TRUE, legend = TRUE, ...)
The function returns a list of two items
the Kolomogorov-Smirnov distance
the frequency (in KHz) where the Kolmogorov-Smirnov distance was found
any distribution, especially a spectrum obtained with spec
or meanspec
(not in dB). This can be either a two-column matrix (col1 = frequency, col2 = amplitude) or a vector (amplitude).
any distribution, especially a spectrum obtained with
spec
or meanspec
(not in dB). This can be
either a two-column matrix (col1 = frequency, col2 = amplitude) or a
vector (amplitude).
sampling frequency of waves used to obtain spec1
and spec2
(in Hz). Not necessary if spec1
and/or spec2
is a two columns matrix obtained with spec
or meanspec
.
a logical, if TRUE
the (htk-)mel scale is used.
logical, if TRUE
plots both cumulated spectra and
their maximal distance (i.e. the K-S distance.)
if plot
is TRUE
, type of plot that should be drawn.
See plot
for details (by default "l" for lines).
a vector of length 2 for the line type of spec1
and
spec2
if type
="l".
a vector of length 2 for the colour of spec1
and spec2
.
title of the frequency axis.
title of the amplitude axis.
the range of frequency values.
range of amplitude axis.
logical, if TRUE
, adds a title with D and F values.
logical, if TRUE
adds a legend to the plot.
other plot
graphical parameters.
Jerome Sueur, improved by Laurent Lellouch
The Kolmogorov distance is the maximal distance between the
cumulated spectra. The function returns this distance and the
corresponding frequency. This is an adaptation of the statistic
computed by the non-parametric Kolmogorov-Smirnov test (see ks.test
).
kl.dist
, simspec
,
diffspec
, logspec.dist
, diffcumspec
, itakura.dist
## Comparison of two spectra and plot of the cumulated spectra with the K-S distance
data(tico)
tico1 <- spec(tico, at=0.65, plot=FALSE)
tico2 <- spec(tico, at=1.1, plot=FALSE)
ks.dist(tico1, tico2, plot=TRUE)
## mel scale
require(tuneR)
data(orni)
orni.mel <- melfcc(orni, nbands = 256, dcttype = "t3", fbtype = "htkmel", spec_out=TRUE)
orni.mel.mean <- apply(orni.mel$aspectrum, MARGIN=2, FUN=mean)
tico.mel <- melfcc(tico, nbands = 256, dcttype = "t3", fbtype = "htkmel", spec_out=TRUE)
tico.mel.mean <- apply(tico.mel$aspectrum, MARGIN=2, FUN=mean)
ks.dist(orni.mel.mean, tico.mel.mean, f=22050, mel=TRUE, plot=TRUE)
Run the code above in your browser using DataLab