Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Distributed Representation
- brain-to-speech
- 분산표현
- latent variable
- 표현학습
- speech reconstruction
- 발화의도
- neural representation learning
- 의료윤리
- BCI
- HPC
- spoken speech
- 블록체인
- imagined speech
- 책
- 헬싱키 선언
- neurotalk
- AI
- 잠재변수
- 뇌와 세계
- 신경과학
- 미겔
- matlab
- 기준음성
- AI윤리
- csp알고리즘
- csp 알고리즘
- gt voice
- 뇌과학
- common spatial pattern
Archives
- Today
- Total
o0y0o
[1주 BCI 기초 다지기] 5일차: 시간 영역 분석, 주파수 영역 분석, FFT 본문
5일차: EEG 데이터의 시간 및 주파수 분석 (25-01-27)
1. 시간 영역(Time-domain) 분석
시간 영역 분석이란?
- 정의
- 시간에 따라 변화하는 신호의 진폭(amplitude)을 시각적으로 분석하는 방법.
- EEG 데이터를 분석할 떄, 신호의 진폭, 파형, 시간적 패턴을 관찰할 수 있음.
- 특징
- EEG 데이터의 크기와 변화를 직관적으로 볼 수 있음.
- 특정 구간에서 발생하는 이벤트(ex. 눈 깜박임, 근육 움직임) 등을 확인 가능.
시간 영역 분석의 목적
- 신호 품질 확인: 눈에 띄는 노이즈가 있는지 시간적으로 확인할 수 있음.
- 특정 이벤트 식별: 시간에 따른 큰 진촉 변화난 특정 패턴 확인할 수 있음.
2. 주파수 영역(Frequency-domain) 분석
주파수 영역 분석이란?
- 정의
- 신호를 주파수 성분으로 변환하여, 각 주파수 대역의 에너지를 분석하는 방법.
- EEG 데이터에서 신호의 주파수 성분(Delta, Theta, Alpha, Beta, Gamma)을 파악할 수 있음.
주파수 영역 분석의 목적
- 신경 활동 상태 분석: 각 주파수 대역은 특정 신경 활동 상태(집중, 이완, 수명 등)과 관련이 있으므로, 주파수 영역 분석을 통해 신경 활동 상태를 분석할 수 있음.
- 노이즈 식별 및 제거: 전력선 노이즈(50/60 Hz)나 근육 활동 신호(30 Hz 이상)를 주파수 성분으로 확인할 수 있음.
- 특정 대역 에너지 계산: 주파수 대역별로 에너지를 계산해, 뇌 상태를 정량적으로 분석할 수 있음.
FFT(Fast Fourier Transform)와 주파수 분석
- FFT란?
- 신호를 시간 영역에서 주파수 영역으로 변환하는 알고리즘 중 하나.
- 이를 통해 특정 주파수 대역의 강도를 시각적으로 확인할 수 있음.
- FFT의 결과
- x축: 주파수(Hz)
- y축: 주파수 성분의 강도(Amplitude 또는 Power)
3. 시간-주파수 분석
- 주파수 영역 분석은 시간 정보가 손실될 수 있음.
- 특정 시점의 주파수 성분을 추적하기 위해 Short-Time Fourier Transform (STFT)나 Wavelet Transform을 사용해 시간-주파수 분석을 수행할 수 있음.
4. MATLAB에서의 실습
실습 1: 시간 영역 분석
% 샘플링 주파수 설정
fs = 250;
t = (0:size(rawData_multi, 2)-1) / fs; % 시간 벡터
% EEG 신호 시각화
figure;
for ch = 1:size(rawData_multi, 1)
subplot(size(rawData_multi, 1), 1, ch);
plot(t, rawData_multi(ch, :));
title(['채널', num2str(ch), '의 신호']);
xlabel('Time (s)');
ylabel('Amplitude (\\muV)');
end
sgtitle('EEG 데이터의 시간 영역 신호');
% 각 채널의 평균 및 표준편차 계산
for ch = 1:size(rawData_multi, 1)
mean_value = mean(rawData_multi(ch, :));
std_value = std(rawData_multi(ch, :));
disp(['채널 ', num2str(ch), ': 평균 = ', num2str(mean_value), ', 표준편차 = ', num2str(std_value)]);
end
실습2: 주파수 영역 분석(FFT)
% FFT 계산
n = length(rawData_multi); % 데이터 길이
f = (0:n/2-1)*(fs/n); % 주파수 벡터
figure;
for ch = 1:size(rawData_multi, 1)
eeg_fft = fft(rawData_multi(ch, :)); % FFT 수행
eeg_fft = abs(eeg_fft(1:n/2)); % 양수 주파수 성분만 사용
subplot(size(rawData_multi, 1), 1, ch);
plot(f, eeg_fft);
title(['채널 ', num2str(ch), '의 FFT']);
xlabel('Frequency (Hz)');
ylabel('Magnitude');
end
sgtitle('EEG 데이터의 주파수 영역 분석 (FFT)');
% 주파수 대역 정의
delta_range = [0.5 4];
theta_range = [4 8];
alpha_range = [8 13];
beta_range = [13 30];
gamma_range = [30 50];
% 주파수별 에너지 계산
for ch = 1:size(rawData_multi, 1)
eeg_fft = fft(rawData_multi(ch, :));
eeg_fft = abs(eeg_fft(1:n/2)); % 양수 주파수 성분만 사용
delta_power = sum(eeg_fft(f >= delta_range(1) & f <= delta_range(2)));
theta_power = sum(eeg_fft(f >= theta_range(1) & f <= theta_range(2)));
alpha_power = sum(eeg_fft(f >= alpha_range(1) & f <= alpha_range(2)));
beta_power = sum(eeg_fft(f >= beta_range(1) & f <= beta_range(2)));
gamma_power = sum(eeg_fft(f >= gamma_range(1) & f <= gamma_range(2)));
disp(['채널 ', num2str(ch)]);
disp(['Delta Power: ', num2str(delta_power)]);
disp(['Theta Power: ', num2str(theta_power)]);
disp(['Alpha Power: ', num2str(alpha_power)]);
disp(['Beta Power: ', num2str(beta_power)]);
disp(['Gamma Power: ', num2str(gamma_power)]);
end
'BCI > 1주 BCI 기초 다지기' 카테고리의 다른 글
[1주 BCI 기초 다지기] 7일차: CSP 알고리즘, Common Spatial Pattern (0) | 2025.01.30 |
---|---|
[1주 BCI 기초 다지기] 6일차: 파워 스펙트럼 분석, PSD (0) | 2025.01.28 |
[1주 BCI 기초 다지기] 4일차: 아티팩트 제거, EOG, EMG, ICA, fastICA (0) | 2025.01.26 |
[1주 BCI 기초 다지기] 3일차: IIR, FIR, Band-pass, Notch 필터 (0) | 2025.01.25 |
[1주 BCI 기초 다지기] 1-2일차: BCI 정의, EEG, 10-20 system, 뇌파 주파수 대역, 전극, 프로그램 (1) | 2025.01.24 |