R-R Intervals 계산
numpy.diff 를 이용하여 전후 피크들의 차를 구한다.
# rr_peaks 는 샘플의 간격 rr_ecg = np.diff(rr_peaks) # 샘플간격을 초단위로 변환 -> 1간격 = (1000 / 샘플링) rr_ecg = rr_ecg * (1000 / 130) |
인터폴레이션함수 정의 ( 주파수 분석을 위해 )
# rr_ecg 는 밀리초 단위 # x 축 = RR간격을 나열(=축적) # 나중에 1초를 4등분(=0.25초)해야 하므로 밀리초를 초로 변환(= 1000 으로 나눔) x_ecg = np.cumsum(rr_ecg) / 1000 # 위의 X축과 RRI값을 Y축으로 하는 인터폴레이션 함수를 선언 f_ecg = interp1d(x_ecg, rr_ecg, kind='cubic', fill_value= 'extrapolate') |
X시간축을 1초당 4개로 분리(4 Hz)하여 인터폴레이션 함수에 적용
fs = 4 steps = 1 / fs # X축을 초당 4 Hz로 확장 xx_ecg = np.arange(0, np.max(x_ecg), steps) # 인터폴레이션 함수 적용 rr_interpolated_ecg = f_ecg(xx_ecg) |
그래프 표시
plt.subplot(211) plt.title('rr-intervals') plt.plot(x_ecg, rr_ecg, color='k', markerfacecolor='#A999D1',marker='o', markersize=3) plt.ylabel('rr-interval (ms)') plt.subplot(212) plt.title('rr-intervals (cubic interpolation)') plt.plot(xx_ecg, rr_interpolated_ecg, color='r') plt.xlabel('Time (s)') plt.ylabel('RR-interval (ms)') plt.show() |
'Health > 심전도(ECG) 분석' 카테고리의 다른 글
7. 결과분석 (0) | 2024.01.08 |
---|---|
6. Heart Rate Variability (HRV) (1) | 2024.01.07 |
4. Peak(R) detection (Revised) (0) | 2023.12.13 |
3. 시그널 전처리 (Revised) (1) | 2023.12.09 |
2. ECG 데이터 클린징 (Revised) (1) | 2023.12.07 |