EEG bandpass filtering locutoff and hicutoff syntax

18 views (last 30 days)
Zhuo
Zhuo on 8 Nov 2025 at 4:29
Commented: Elias about 3 hours ago
I have been confused with this basic question for a while. If I want to keep the EEG data ranging from 0.05Hz- 80Hz when doing the bandpass filtering step, should I run: EEG = pop_eegfiltnew(EEG, 'locutoff', 0.05, 'hicutoff', 80)or EEG = pop_eegfiltnew(EEG, 'locutoff', 0.05, 'hicutoff', 80, ‘revfilt’, 1)? Thank you so much for anawering this question!

Answers (1)

Umar
Umar on 9 Nov 2025 at 7:14
Edited: Umar on 9 Nov 2025 at 7:15

Hi @Zhuo,

For your question about bandpass filtering EEG data in the range of 0.05Hz to 80Hz, the choice between the two commands depends on the filtering approach you'd like to use:

  • If you're processing offline data and want to preserve phase relationships, you should use:
    EEG = pop_eegfiltnew(EEG, 'locutoff', 0.05, 'hicutoff', 80, 'revfilt', 1);

This applies a zero-phase filter (non-causal), which is ideal for offline processing when phase accuracy is important.

  • If you're working with *real-time data* or prefer a *causal filter*, then you can use:
    EEG = pop_eegfiltnew(EEG, 'locutoff', 0.05, 'hicutoff', 80);

This applies a causal bandpass filter, which only uses past and present data.

For most offline analyses, `revfilt = 1` is recommended for better phase preservation.

Hope this helps.

Reference:

https://sccn.ucsd.edu/pipermail/eeglablist/2023/016946.html

  1 Comment
Elias
Elias 4 minutes ago
Hi Umar,
So to your understanding, the default setting of 'pop_eegfiltnew' is a causal bandpass filter? Based on what I am reading, it sounds like the newer function is a non-causal filter unless one manually selects for it to be causal. Here is where I read that:
Elias

Sign in to comment.

Categories

Find more on EEG/MEG/ECoG in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!