spec {seewave} | R Documentation |
This function returns the frequency spectrum (i.e. the relative amplitude of the frequency content) of a time wave. Results can be obtained either as absolute or dB data.
spec(wave, f, channel = 1, wl = 512, wn = "hanning", fftw = FALSE, norm = TRUE, scaled = FALSE, PSD = FALSE, PMF = FALSE, correction="none", dB = NULL, dBref = NULL, at = NULL, from = NULL, to = NULL, identify = FALSE, col = "black", cex = 1, plot = 1, flab = "Frequency (kHz)", alab = "Amplitude", flim = NULL, alim = NULL, type="l",...)
wave |
an R object. |
f |
sampling frequency of |
channel |
channel of the R object, by default left channel (1). |
wl |
if |
wn |
window name, see |
fftw |
if |
norm |
if |
scaled |
if |
PSD |
if |
PMF |
if |
correction |
a character vector of length 1 to apply an
amplitude ("amplitude") or an energy ("energy") correction
to the FT window. This argument is useful only when one wish to obtain
absolute values that is when |
dB |
a character string specifying the type dB to return: "max0" for a maximum dB value at 0, "A", "B", "C", "D", and "ITU" for common dB weights. |
dBref |
a dB reference value when |
at |
position where to compute the spectrum (in s). |
from |
start mark where to compute the spectrum (in s). |
to |
end mark where to compute the spectrum (in s). |
identify |
to identify frequency and amplitude values on the plot with the help of a cursor. |
col |
colour of the spectrum. |
cex |
pitch size of the spectrum. |
plot |
if |
flab |
title of the frequency axis. |
alab |
title of the amplitude axis. |
flim |
range of frequency axis. |
alim |
range of amplitude axis. |
type |
if |
... |
other |
If at
, from
or to
are FALSE
then spec
computes the spectrum of the whole signal.
This function returns a two-column matrix,
the first column corresponding to the frequency axis, the second column
corresponding to the amplitude axis.
If identify
is TRUE
, spec
returns a list with
two elements:
freq |
the frequency of the points chosen on the spectrum |
amp |
the relative amplitude of the points chosen on the spectrum |
The argument peaks
is no more available
(version > 1.5.6). See the function fpeaks
for peak(s) detection.
This function is based on fft
.
Jerome Sueur
meanspec
, fpeaks
,
localpeaks
, dynspec
,
corspec
, fft
.
data(tico) # spectrum of the whole signal, in absolute or dB amplitude, # horizontaly or vertically op<-par(mfrow=c(2,2)) spec(tico,f=22050) spec(tico,f=22050,col="red",plot=2) spec(tico,f=22050,dB="max0",col="blue") spec(tico,f=22050,dB="max0",col="green",plot=2) par(op) # an indirect way to compare spectra a<-spec(tico,f=22050,wl=512,at=0.2,plot=FALSE) b<-spec(tico,f=22050,wl=512,at=0.7,plot=FALSE) c<-spec(tico,f=22050,wl=512,at=1.1,plot=FALSE) d<-spec(tico,f=22050,wl=512,at=1.6,plot=FALSE) all<-cbind(a[,2],b[,2],c[,2],d[,2]) matplot(x=a[,1],y=all,yaxt="n", xlab="Frequency (kHz)",ylab="Amplitude",xaxs="i",type="l") legend(8,0.8,c("Note A","Note B", "Note C", "Note D"),bty="o", lty=c(1:4),col=c(1:4)) # spectrum from a particular position to another one op<-par(mfrow=c(2,1)) oscillo(tico,f=22050) abline(v=c(0.5,0.9),col="red",lty=2) spec(tico,f=22050,wl=512,from=0.5,to=0.9,col="red") title("Spectrum of the note B") par(op) # spectrum and spectrogram data(orni) orni1<-cutw(orni,f=22050,from=0.32,to=0.39) layout(matrix(c(1,2),nc=2),widths=c(3,1)) par(mar=c(5,4,3,0.5)) spectro(orni1,f=22050,wl=128,zp=8,ovlp=85,scale=FALSE) par(mar=c(5,1,3,0.5)) spec(orni1,f=22050,col="red",plot=2,flab="",yaxt="n")