filter.fft: Filter in the frequency domain

Description Usage Arguments Details Examples

View source: R/filterFFT.R

Description

This function provides a method to band pass filter in the frequency domain.

Usage

1
2
3
4
5
6
7
8
filter.fft(
  y = stop("y-value is missing"),
  x = NULL,
  fc = 0,
  BW = 0,
  n = 3,
  type = "poly"
)

Arguments

y

numeric data vector

x

optional x-coordinate

fc

center frequency of the bandpass

BW

bandwith of the bandpass

n

parameter to control the stiffness of the bandpass

type

type of weightening function: "poly", "sinc", "bi-cubic","gauss", can be abbreviated

Details

A signal y is meant to be equaly spaced and causal, which means it starts at t=0. For times y < 0 the signal is not defined. The filtering itself takes place with the analytic function of y which provides an one sided spectrum. Applying the Fourier transform, all properties of y will be preserved.

The band pass is represented throughout a function in the form of four different types, i.e. "polynom", "sin(x)/x", "bi-cubic", "gauss". A detailed description about these types can be found in BP.

Setting fc = 0 one can achieve a low pass filter.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
## noisy signal with amplitude modulation
x <- seq(0,1, length.out=500)

# original data
y_org <- (1+sin(2*2*pi*x))*sin(20*2*pi*x)

# overlay some noise
y_noise <- y_org+rnorm(length(x),sd=0.2)

# filter the noisy data
y_filt <- filter.fft(y_noise,x,fc=20,BW=4,n=50)

# plot results
plot(x,y_noise,type="l",lwd=1,col="darkgrey",lty=2,ylab="y",main="Spectral filtering")
lines(x,y_org,lwd=5,col="grey")
lines(x,y_filt)
legend("topright",c("org","noisy","filtered"),col=c("grey","darkgrey","black")
        ,lty=c(1,2,1),lwd=c(5,1,1))

Example output

Loading required package: rasterImage
Loading required package: plotrix
Warning message:
In xy.coords(x, y) : imaginary parts discarded in coercion

spectral documentation built on March 29, 2021, 5:10 p.m.