본문 바로가기
Brain Engineering/EEGLAB

[EEGLAB] Filtering / Downsampling

by goatlab 2022. 3. 14.
728x90
반응형
SMALL

Filtering

 

1. 뇌파로 인해 발생한 결과가 아닌, 다른 노이즈를 제거하고 원하는 Hz 정보만 얻기 위해서 Filtering 과정을 거친다. 저는 high pass filter 기준을 0.1Hz, low pass filter 기준을 30Hz로 지정하였다. 이에 대한 기준은 기존 논문을 참고하는 것이 좋다 (gamma파 등 high frequency 정보가 필요한 경우 low pass filter 기준을 더 높게 잡아야한다).

 

2. Tools > Filter the data > Basic FIR filter 를 선택한다.

 

 

3. 원하는 filtering 구간 정보를 입력한다.

 

 

4. matlab command 창에서 필터링 진행 상황이 표시된다.

 

filering을 진행하는 matlab 코드는 다음과 같다.

 

EEG = pop_eegfiltnew(EEG, 0.1,30,[],0,[],0);

 

Downsampling

 

1. 데이터는 1000 Hz의 sampling rate를 가지고 있지만, 실제 데이터 분석에서는 아직 250Hz나 500Hz가 많이 사용되고 있기 때문에 Downsampling을 진행한다. 또한, ICA를 돌릴 때도 Sampling rate가 속도에 영향을 줄 수 있다.

 

2. Tools > Change sampling rate를 선택한다.

 

 

3. 원하는 Sampling rate를 입력한다.

 

 

4. 바뀐 결과를 확인할 수 있다.

 

 

Sampling rate을 바꾸는 matlab 코드는 다음과 같습니다.

 

EEG = pop_resample( EEG, 500);

 

여러 데이터 처리를 위한 스크립트 생성

 

위의 과정을 EEGLAB GUI 화면을 이용해 진행할 수 있지만, 많은 피험자들에게 똑같은 preprocessing을 진행하는 과정은 굳이 마우스 클릭으로 진행할 필요는 없을 것이다. 이를 matlab 스크립트로 작성하면 다음과 같다.

 

% 변수 세팅
runStr = '*.cnt'; % 혹은 처리를 원하는 파일 형식에 따라 '*.set';
fileNames = dir(runStr);
foldersize = size(fileNames,1);
resamplerate = 512

% eeglab load
eeglab;

% processing
for file = 1:foldersize

    fprintf('\n\nprocessing file %d \n', file)  

    % 1. load EEG file
%     EEG = pop_loadcnt(fileNames(file).name , 'dataformat', 'auto', 'memmapfile', '');
%     EEG = eeg_checkset( EEG );
    EEG = pop_loadset('filename',fileNames(file).name,'filepath',EEGloc);
    EEG = eeg_checkset( EEG );

    % 2. load channel location file
    EEG=pop_chanedit(EEG, 'lookup','C:\\Users\\BY\\Documents\MATLAB\\eeglab14_1_1b\\plugins\\dipfit2.3\\standard_BESA\\standard-10-5-cap385.elp');

    % 3. reference - offline (M1 M2)
    EEG = pop_reref( EEG, [33 43] );

    % 4. band pass filter (1, 30 Hz)
    EEG = pop_eegfiltnew(EEG, 0.1,30,[],0,[],0); % final argument 0 for not plotting & filtorder is empty

    % 5. resample (down sample) : 1000Hz -> resamplerate Hz
    EEG = pop_resample( EEG, resamplerate);

    % 6. save data
    EEG = pop_saveset( EEG, 'filename',strcat(fileNames(file).name,'pp.set'),'filepath','D:\\EEG 파일 모음\\');

end

 

 

https://wikidocs.net/32541

 

2-2-1. Re-referencing, Filtering, Downsampling

[TOC] ## eeglab으로 데이터 로드 * matlab command 창에서 `>>> eeglab` 을 입력하여 eeglab을 실행시켜줍니다. * Neuroscan 을 ...

wikidocs.net

 

728x90
반응형
LIST