zc {seewave}R Documentation

Instantaneous frequency of a time wave by zero-crossing

Description

This function measures the period of a full oscillating cycle.

Usage

zc(wave, f, plot = TRUE, interpol = 1, threshold = FALSE,
xlab = "Time (s)", ylab = "Frequency (kHz)", ylim = c(0, f/2000),...)

Arguments

wave data describing a time wave.
f sampling frequency of wave.
plot logical, if TRUE plots the dominant frequency along the time wave(by default TRUE).
interpol interpolation factor.
threshold amplitude threshold for signal detection (in % ).
xlab title of the x axis.
ylab title of the y axis.
ylim the range of y values.
... other plot graphical parameters.

Details

If plot is FALSE, zc returns a vector of numeric data with the instantaneous frequency.

Value

If plot is FALSE, zc functions returns a vector of numeric data. Values corresponds to the instantaneous frequency of the time wave. ‘NA’s correspond either to pause periods (e. g. detected applying threshold or sections of the time wave not corrsing the zero line. To remove ‘NA’s with na.omit allows to get only instantaneous frequency values but discards information about pause sections.

Note

interpol adds points to the time wave by linear interpolation (through approx). This increases measurement precision but as well time process. Type argument of plot cannot be set to “l”.

Author(s)

Jérôme Sueur jerome.sueur@ibaic.u-psud.fr, Caroline Simonis-Sueur csimonis@mnhn.fr and Thierry Aubin thierry.aubin@ibaic.u-psud.fr

References

Hopp, S. L., Owren, M. J. and Evans, C. S. (Eds) 1998. Animal acoustic communication. Springer, Berlin, Heidelberg.

Examples

data(pellucens)
pellu1<-cutw(pellucens,f=22050,from=0,to=1,plot=FALSE)
# without interpolation
zc(pellu1,f=22050,threshold=5,pch=20)
# with interpolation
zc(pellu1,f=22050,threshold=5,interpol=20,pch=20)
# a way to plot with a line and to filter low frequencies
pellu2<-zc(pellu1,f=22050,threshold=5,interpol=20,plot=FALSE)
pellu3<-na.omit(pellu2)
pellu4<-pellu3[pellu3>3]
plot(x=seq(0,nrow(pellu1)/22050,length.out=length(pellu4)),
    y=pellu4,type="l",xlab="Time(s)",ylab="Frequency(kHz)")

[Package seewave version 1.2 Index]