Q {seewave} | R Documentation |
This function estimates the frequency pureness of a time wave by returning the resonant quality factor Q at a specific dB level.
Q(spec, f = NULL, level = -3, mel = FALSE, plot = TRUE, colval = "red", cexval = 1, fontval = 1, flab = NULL, alab = "Relative amplitude (dB)", type = "l", ...)
spec |
a data set resulting of a spectral analysis obtained
with |
f |
sampling frequency of the wave used to obtain |
level |
frequency bandwidth set by an amplitude value relative
to |
mel |
a logical, if |
plot |
logical, if |
colval |
colour of plotting Q. |
cexval |
character size of plotting Q. |
fontval |
font of plotting Q. |
flab |
title of the frequency axis. |
alab |
title of the amplitude axis. |
type |
if |
... |
other |
A high Q value indicates a highly resonant system.
A list is returned with the following four items:
Q |
a numeric vector of length 1 returning the Q factor (no units) |
dfreq |
a numeric vector of length 1 the dominant frequency (kHz) |
fmin |
a numeric vector of length 1 returning the minimum frequency of the -dB level bandwidth (kHz) |
fmax |
a numeric vector of length 1 returning the minimum frequency of the -dB level bandwidth (kHz) |
bwd |
a numeric vector of length 1 returning the bandwidth,
i. e. |
This function is based on an linear interpolation of the spectrum so that the result should be considered as an estimation, not an exact measure.
Jerome Sueur, improved by Laurent Lellouch
# bird song data(tico) t<-spec(tico,f=22050,at=1.1,plot=FALSE,dB="max0") op<-par(mfrow=c(2,1),las=1) Q(t,type="l") Q(t,type="l",xlim=c(3.8,4.2),ylim=c(-60,0)) title("zoom in") par(op) # cricket, changing the dB level data(pellucens) p<-spec(pellucens,f=11025,at=0.5,plot=FALSE,dB="max0") op<-par(mfrow=c(3,1)) Q(p,type="l",xlim=c(1.8,2.6),ylim=c(-70,0)) title("level = - 3 (default value)",col.main="red") Q(p,type="l",level=-6, xlim=c(1.8,2.6),ylim=c(-70,0),colval="blue") title("level = - 6",col.main="blue") Q(p,type="l",level=-9, xlim=c(1.8,2.6),ylim=c(-70,0),colval="green") title("level = - 9",col.main="green") par(op)