Learn R Programming

seewave (version 2.1.6)

ffilter: Frequency filter

Description

This function filters out a selected frequency section of a time wave (low-pass, high-pass, low-stop, high-stop, bandpass or bandstop frequency filter).

Usage

ffilter(wave, f, channel = 1, from = NULL, to = NULL, bandpass = TRUE,
custom = NULL, wl = 1024, ovlp = 75, wn = "hanning", fftw = FALSE,
rescale=FALSE, listen=FALSE, output="matrix")

Arguments

wave

an R object.

f

sampling frequency of wave (in Hz). Does not need to be specified if embedded in wave.

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 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. The length of the vector should be half the length of wl. See examples.

wl

window length for the analysis (even number of points).

ovlp

overlap between successive FFT windows (in %).

wn

window name, see ftwindow (by default "hanning").

fftw

if TRUE calls the function FFT of the library fftw. See Notes of the spectro.

rescale

a logical, if TRUE then the sample values of new wave (output) are rescaled according to the sample values of wave (input).

listen

a logical, if TRUE the new sound is played back.

output

character string, the class of the object to return, either "matrix", "Wave", "audioSample" or "ts".

Value

If plot is FALSE, a new wave is returned. The class of the returned object is set with the argument output.

Details

A short-term Fourier transform is first applied to the signal (see spectro), then the frequency filter is applied and the new signal is eventually generated using the reverse of the Fourier Transform (istft). There is therefore neither temporal modifications nor amplitude modifications.

See Also

afilter,lfs,fir, preemphasis, combfilter, bwfilter

Examples

Run this code
# NOT RUN {
a<-noisew(f=8000,d=1)
# low-pass
b<-ffilter(a,f=8000,to=1500)
spectro(b,f=8000,wl=512)
# high-pass
c<-ffilter(a,f=8000,from=2500)
spectro(c,f=8000,wl=512)
# band-pass
d<-ffilter(a,f=8000,from=1000,to=2000)
spectro(d,f=8000,wl=512)
# band-stop
e<-ffilter(a,f=8000,from=1500,to=2500,bandpass=FALSE)
spectro(e,f=8000,wl=512)
# custom
myfilter1<-rep(c(rep(0,64),rep(1,64)),4)
g<-ffilter(a,f=8000,custom=myfilter1)
spectro(g,f=8000)
# }

Run the code above in your browser using DataLab