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, from = FALSE, to = FALSE, bandpass = TRUE, custom = NULL, wl = 512, wn = "hanning", listen = FALSE, Sample= FALSE)
wave |
data describing a time wave
or a Sample object created generated a wav file
with loadSample (package sound). |
f |
sampling frequency of wave (in Hz).
Does not need to be specified if wave is a Sample object. |
from |
start frequency (in Hz) where to apply the filter. |
to |
end frequency (in Hz) where to apply the filter. |
bandpass |
if TRUE a band-pass filter is applied between
from and to , if FALSE a band-stop filter is applied
between from and to (by default TRUE ). |
custom |
a vector describing the frequency response of a custom filter.
This can be manually generated or obtained with spec and meanspec .
wl is no more required. See examples. |
wl |
window length of the impulse filter (even number of points). |
wn |
window name, see ftwindow (by default "hanning" ). |
listen |
if TRUE the new sound is played back. |
Sample |
if TRUE and plot is FALSE
returns an object of class Sample |
.
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 as a one-column matrix
or as a Sample
object if Sample
is TRUE
.
Jerome Sueur sueur@mnhn.fr
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
,lfs
, afilter
,
fir1
, fir2
a<-noise(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<-noise(d=1,f=22050) h<-fir(b,f=22050,custom=myfilter2) spectro(h,f=22050)