fir {seewave} | R Documentation |
This function is a FIR filter that filters out a selected frequency section of a time wave (low-pass, high-pass, low-stop, high-stop, bandpass or bandstop frequency filter).
fir(wave, f, channel = 1, from = NULL, to = NULL, bandpass = TRUE, custom = NULL, wl = 512, wn = "hanning", rescale=FALSE, listen = FALSE, output = "matrix")
wave |
an R object. |
f |
sampling frequency of |
channel |
channel of the R object, by default left channel (1). |
from |
start frequency (in Hz) where to apply the filter. |
to |
end frequency (in Hz) where to apply the filter. |
bandpass |
if |
custom |
a vector describing the frequency response of a custom filter.
This can be manually generated or obtained with |
wl |
window length of the impulse filter (even number of points). |
wn |
window name, see |
rescale |
a logical, if |
listen |
a logical, if |
output |
character string, the class of the object to return, either
|
This function is based on the reverse of the Fourier Transform
(fft
) and on a convolution (convolve
) between the
wave to be filtered and the impulse filter.
A new wave is returned. The class
of the returned object is set with the argument output
.
Jerome Sueur
Stoddard, P. K. (1998). Application of filters in bioacoustics. In: Hopp, S. L., Owren, M. J. and Evans, C. S. (Eds), Animal acoustic communication. Springer, Berlin, Heidelberg,pp. 105-127.
ffilter
, bwfilter
, preemphasis
, lfs
, afilter
a<-noisew(f=8000,d=1) # low-pass b<-fir(a,f=8000,to=1500) spectro(b,f=8000) # high-pass c<-fir(a,f=8000,from=2500) spectro(c,f=8000) # band-pass d<-fir(a,f=8000,from=1000,to=2000) spectro(d,f=8000) # band-stop e<-fir(a,f=8000,from=1500,to=2500,bandpass=FALSE) spectro(e,f=8000) # custom filter manually generated myfilter1<-rep(c(rep(0,32),rep(1,32)),4) g<-fir(a,f=8000,custom=myfilter1) spectro(g,f=8000) # custom filter generated using spec() data(tico) myfilter2<-spec(tico,f=22050,at=0.7,wl=512,plot=FALSE) b<-noisew(d=1,f=22050) h<-fir(b,f=22050,custom=myfilter2) spectro(h,f=22050)