Hi @Zhuo,
I have edited my comments after reviewing the sources provided by @Elias. Please see the latest response below. It was my mistake not thoroughly reviewing the sources.
To bandpass filter your EEG data from 0.05Hz to 80Hz, you should use:
EEG = pop_eegfiltnew(EEG, 'locutoff', 0.05, 'hicutoff', 80);
This command will keep frequencies between 0.05Hz and 80Hz, which is what you want. The function applies a zero-phase (non-causal) filter by default, which is appropriate for offline EEG analysis and preserves phase relationships in your data.
You should not use revfilt = 1 in this case. The revfilt parameter is used to reverse the filter behavior, converting a bandpass filter into a notch filter. If you set revfilt = 1, the filter would remove frequencies between 0.05Hz and 80Hz instead of keeping them, which is the opposite of what you're trying to achieve.
The default behavior of pop_eegfiltnew is already non-causal with zero-phase filtering, which is ideal for most offline EEG processing. This means you don't need to add any additional parameters to get phase-preserving filtering. The function automatically handles the delay correction for you.
If you ever needed causal filtering, which is only necessary for specific applications like real-time processing or pre-stimulus analysis, you would need to explicitly add the minphase parameter: pop_eegfiltnew(EEG, 'locutoff', 0.05, 'hicutoff', 80, 'minphase', 1). However, for standard offline analysis, the basic command without additional parameters is what you need.
References: https://sccn.ucsd.edu/eeglab/eeglab_news/9/Q_and_A.php https://sccn.ucsd.edu/pipermail/eeglablist/2013/005966.html