Simply EEGLAB

Resampling

Station 3 · Lesson 1 · EEGLAB 2026.1

In the GUI

  1. ToolsChange sampling rate
  2. Resample current dataset -- pop_resample()New sampling rateOK 64
  3. Overwrite it in memory (set=yes; unset=create a new dataset) Continuous EEG Data resampledD1 64Hz
  4. PlotChannel data (scroll)
  5. Datasets D1 64Hz

Script

EEG_64 = pop_resample(EEG, 64);
EEG_64.setname = 'D1 64Hz';
fprintf('Original : %g Hz, %d samples, %d events\n', EEG.srate, EEG.pnts, length(EEG.event));
fprintf('Resampled: %g Hz, %d samples, %d events\n', EEG_64.srate, EEG_64.pnts, length(EEG_64.event));
cz = find(strcmp({EEG.chanlocs.labels}, 'Cz'));
t1 = (0:2*EEG.srate-1) / EEG.srate;
t2 = (0:2*EEG_64.srate-1) / EEG_64.srate;
figure; hold on;
plot(t1, EEG.data(cz, 1:numel(t1)), '.-');
plot(t2, EEG_64.data(cz, 1:numel(t2)), 'o-');
legend('128 Hz', '64 Hz');
xlabel('Time (s)'); ylabel('Amplitude (uV)');

Which value should I choose?

SettingValue
D1Do not change the rate (128 Hz)
Raw data at 500 or 1000 Hz for ERP analysis250 Hz, or 256
General ruleNew rate ≥ 2.5 × the highest frequency of interest
Where in the pipelineOn continuous data, before filtering and epoching

Check

  • In the main EEGLAB window
  • The number of events did not change
  • The recording length did not change
  • The original dataset is intact

For your Methods

Data were downsampled to 250 Hz using pop_resample (EEGLAB 2026.1), which applies an anti-aliasing low-pass FIR filter (Kaiser window) before resampling.

Full lesson: https://simplyeeglab.pages.dev/en/lesson/resampling/

Content license: CC BY-NC-SA 4.0 · MIT (code)

An independent learning site, not affiliated with EEGLAB or SCCN.