| 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, wl = 512, wn = "hanning", PSD = FALSE, PMF = FALSE, dB = FALSE, at = NULL, from = NULL, to = NULL, peaks = NULL, identify = FALSE, col = "black", cex = 1, colpeaks = "red", cexpeaks = 1, fontpeaks = 1, plot = 1, flab = "Frequency (kHz)", alab = "Amplitude", flim = c(0, f/2000), alim = NULL, type="l",...)
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. |
wl |
if at is not null, length of the window for the analysis
(even number of points, by defaults = 512). |
wn |
window name, see ftwindow (by default "hanning"). |
PSD |
if TRUE return Power Spectra Density,
i. e. the square of the spectra. |
PMF |
if TRUE return Probability Mass Function,
i. e. the probability distribution of frequencie. |
dB |
logical, if TRUE returns the spectrum in dB
(by default FALSE). |
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). |
peaks |
if not NULL returns peaks value for a given span (see details). |
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. |
colpeaks |
colour of peaks value plotted on the spectrum. |
cexpeaks |
character size of peaks value plotted on the spectrum. |
fontpeaks |
font of peaks value plotted on the spectrum. |
plot |
if 1 returns frequency on x-axis, if 2 returns
frequency on y-axis, (by default 1). |
flab |
title of the frequency axis. |
alab |
title of the amplitude axis. |
flim |
range of frequency axis. |
alim |
range of amplitude axis. |
type |
if plot is TRUE, type of plot that should be drawn.
See plot for details (by default "l" for lines). |
... |
other plot graphical parameters. |
If at, from or to are FALSE then spec
computes the spectrum of the whole signal.
peaks setting corresponds to dimension of embed.
See examples.
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 |
spec |
the spectrum computed |
peaks |
the peaks value (in kHz). |
This function is based on fft.
Jerome Sueur sueur@mnhn.fr and
Martin Maechler maechler@stat.math.ethz.ch for peaks.
meanspec, 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=TRUE,col="blue")
spec(tico,f=22050,dB=TRUE,col="green",plot=2)
par(op)
# spectra computed at specific locations with peak value
op<-par(mfrow=c(2,2))
spec(tico,f=22050,wl=512,at=0.2,peak=175)
title("Note A")
spec(tico,f=22050,wl=512,at=0.7,peak=175)
title("Note B")
spec(tico,f=22050,wl=512,at=1.1,peak=175)
title("Note C")
spec(tico,f=22050,wl=512,at=1.6,peak=165)
title("Note D")
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)
text(c("from 0.5 s","to 0.7 s"),
x=c(0.5,0.9),y=rep(max(tico/1.1),2),col="red",pos=4)
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")