Construct a Butterworth IIR filter and filter input data. This uses signal::filt_filt, which filters the signal twice to - once forwards, then again backwards).

iir_filt(data, ...)

# S3 method for data.frame
iir_filt(
  data,
  low_freq = NULL,
  high_freq = NULL,
  filter_order = 4,
  srate,
  silent = FALSE,
  ...
)

# S3 method for eeg_data
iir_filt(
  data,
  low_freq = NULL,
  high_freq = NULL,
  filter_order = 4,
  silent = FALSE,
  ...
)

# S3 method for eeg_epochs
iir_filt(
  data,
  low_freq = NULL,
  high_freq = NULL,
  filter_order = 4,
  silent = FALSE,
  ...
)

Arguments

data

Data to be filtered.

...

Parameters passed to S3 methods

low_freq

Low passband edge.

high_freq

High passband edge.

filter_order

Order of the Butterworth filter.

srate

Sampling rate of the signal.

silent

Turns off filtering messages.

Details

low_freq and high_freq are passband edges. Pass low freq or high freq alone to perform high-pass or low-pass filtering respectively. For band-pass or band-stop filters, pass both low_freq and high_freq.

If low_freq < high_freq, bandpass filtering is performed.

If low_freq > high_freq, bandstop filtering is performed.

Note that the signal is first zero-meaned using either channel means or by-channel epoch means.

Methods (by class)

  • data.frame: Filter a data frame

  • eeg_data: Filter eeg_data objects

  • eeg_epochs: Filter eeg_epochs objects.

Author

Matt Craddock matt@mattcraddock.com

Examples

plot_psd(iir_filt(demo_epochs, low_freq = 1, high_freq = 30))
#> Band-pass IIR filter from 1-30 Hz
#> Removing channel means per epoch...
plot_psd(iir_filt(demo_epochs, low_freq = 12, high_freq = 8))
#> Band-stop IIR filter from 8-12 Hz
#> Removing channel means per epoch...