| diffspec {seewave} | R Documentation |
This function estimates the surface difference between two frequency spectra.
diffspec(spec1, spec2, f = NULL, dB = FALSE, plot = FALSE, type="l", lty1 = 1, lty2 = 2, col1 = 2, col2 = 4, cold = 8, flab = "Frequency (kHz)", alab = "Amplitude", flim = NULL, alim = NULL, legend = TRUE, ...)
spec1 |
a first data set resulting of a spectral analysis obtained
with spec or meanspec (not in dB). This
can be either a two-column matrix (col1 = frequency, col2 = amplitude)
or a vector (amplitude). |
spec2 |
a first data set resulting of a spectral analysis obtained
with spec or meanspec (not in dB). This
can be either a two-column matrix (col1 = frequency, col2 = amplitude)
or a vector (amplitude). |
f |
sampling frequency of waves used to obtain spec1
and spec2 (in Hz). Not necessary if spec1 and/or spec2
is a two-column matrix obtained with spec or meanspec. |
dB |
logical, if TRUE return the spectra and their surface
difference in dB (by default FALSE). |
plot |
logical, if TRUE plots both spectra and their surface
difference (by default FALSE). |
type |
if plot is TRUE, type of plot that should be drawn.
See plot for details (by default "l" for lines). |
lty1 |
line type of spec1 if type="l". |
lty2 |
line type of spec2 if type="l". |
col1 |
colour of spec1. |
col2 |
colour of spec2. |
cold |
colour of the surface difference. |
flab |
title of the frequency axis. |
alab |
title of the amplitude axis. |
flim |
the range of frequency values. |
alim |
range of amplitude axis. |
legend |
logical, if TRUE adds a legend to the plot. |
... |
other plot graphical parameters. |
Both spectra are first transformed as probability mass functions (PMF).
Spectral difference is then computed according to:
D = sum(abs(spec1-spec2)), with 0 < D <1.
The difference is returned. This value is without unit.
If dB is TRUE, the same value is returned in dB.
When plot is TRUE, both spectra and their difference surface are
plotted on the same graph.
This method can be used as a relative distance estimation
between different spectra.
The dB value obtained can be very different from the one visually estimated
when looking at the graph (plot=TRUE).
Jérôme Sueur sueur@mnhn.fr and Sandrine Pavoine pavoine@mnhn.fr.
spec, meanspec, corspec,
simspec, diffenv
a<-noise(f=8000,d=1) b<-synth(f=8000,d=1,cf=2000) c<-synth(f=8000,d=1,cf=1000) d<-noise(f=8000,d=1) speca<-spec(a,f=8000,wl=512,at=0.5,plot=FALSE) specb<-spec(b,f=8000,wl=512,at=0.5,plot=FALSE) specc<-spec(c,f=8000,wl=512,at=0.5,plot=FALSE) specd<-spec(d,f=8000,wl=512,at=0.5,plot=FALSE) diffspec(speca,speca,f=8000) #[1] 0 => similar spectra of course ! diffspec(speca,specb) diffspec(speca,specc,plot=TRUE) diffspec(specb,specc,plot=TRUE) diffspec(speca,specd,plot=TRUE)