Learn R Programming

seewave (version 1.6.3)

diffspec: Difference between two frequency spectra

Description

This function estimates the surface difference between two frequency spectra.

Usage

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, ...)

Arguments

Value

  • 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.

Details

Both spectra are first transformed as probability mass functions (PMF). Spectral difference is then computed according to: $$D = \frac{\sum{|spec1-spec2|}}{2}, with D \in [0,1].$$ with 0 < D

References

Sueur, J., Pavoine, S., Hamerlynck, O. and Duvail, S. (2008). Rapid acoustic survey for biodiversity appraisal. PLoS One, 3(12): e4065.

See Also

spec, meanspec, corspec, simspec, diffenv, kl.dist, ks.dist, logspec.dist, itakura.dist

Examples

Run this code
a<-noisew(f=8000,d=1)
b<-synth(f=8000,d=1,cf=2000)
c<-synth(f=8000,d=1,cf=1000)
d<-noisew(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)

Run the code above in your browser using DataLab