Learn R Programming

seewave (version 1.5.2)

zc: 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 = NULL,
xlab = "Time (s)", ylab = "Frequency (kHz)", ylim = c(0, f/2000),...)

Arguments

wave
a vector, a matrix (first column), an object of class ts, Sample (left channel), or Wave (left channel).
f
sampling frequency of wave (in Hz). Does not need to be specified if wave is an object of class ts, Sample, or 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.

Value

  • If plot is FALSE, zc returns a two-column matrix, the first column corresponding to time in seconds (x-axis) and the second column corresponding to the instantaneous frequency of the time wave in kHz (y-axis). NAs correspond either to pause periods (e. g. detected applying threshold or sections of the time wave not crossing the zero line. To remove NAs with na.omit allows to get only instantaneous frequency values but discards information about pause sections.

Details

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

References

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

See Also

ifreq

Examples

Run this code
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[,2])
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)")

Run the code above in your browser using DataLab