用課堂上錄到的心電資料,透過 Claude Code + NeuroKit2 產出一份完整的 HRV 分析報告與龐加萊圖。
1
HRV 報告 + 龐加萊圖
在課堂上用 Arduino + AD8232 錄一段至少 5 分鐘的心電訊號(CSV),然後用 Claude Code 寫一個 Python 程式,用 NeuroKit2 分析 HRV 並產出龐加萊圖。
為什麼要 5 分鐘?HRV 的頻域分析(LF/HF ratio)需要至少 5 分鐘的資料才有統計意義。這是臨床標準,不是隨便定的。
Step 1:錄 5 分鐘心電資料
# 課堂上錄,或用模擬器錄
$ python3 python/ecg_plot.py --csv my_ecg_5min.csv
# 錄 5 分鐘 = 150,000 筆 (500 Hz × 300 秒)
# 錄的時候盡量保持靜止,減少肌電雜訊
Step 2:用 Claude Code 寫分析程式
# 建立專案
$ mkdir ecg-hrv && cd ecg-hrv
$ conda activate bioagent
$ pip install neurokit2
$ git init
# 把錄好的 CSV 複製進來
$ cp ../ecg-r4/my_ecg_5min.csv .
# 開 Claude Code
$ claude
Step 3:給 Claude Code 的 Prompt
# 在 Claude Code 裡輸入:
讀取 my_ecg_5min.csv,
這是 500 Hz 取樣的心電圖資料,
欄位是 sample, adc, filtered, lead_off。
幫我用 neurokit2 做以下分析:
1. 用 adc 欄位的原始訊號做 R 波偵測
2. 計算 HRV 指標(時域:RMSSD, SDNN, pNN50;
頻域:LF, HF, LF/HF ratio)
3. 畫龐加萊圖(Poincaré plot):
X 軸 = RR(n), Y 軸 = RR(n+1)
4. 產出一份摘要報告,包含所有數值
把結果存成 PNG 圖片和文字報告。
Step 4:推到 GitHub
$ git add .
$ git commit -m "Add HRV analysis with Poincaré plot"
$ git remote add origin git@github.com:你的帳號/ecg-hrv.git
$ git push -u origin main
繳交內容
- 1. GitHub repo 連結
- 2. HRV 報告截圖(包含 RMSSD, SDNN, LF/HF 等數值)
- 3. 龐加萊圖截圖
產出的結果會長這樣
以下是用模擬的 5 分鐘心電資料跑出來的範例,你的實際數據會不一樣:
HRV 報告:ECG + R 波、RR 間期趨勢、時域指標、頻域 LF/HF
龐加萊圖:SD1/SD2 橢圓反映短期與長期心率變異
這個作業練到什麼?
-
資料採集到分析的完整流程
從貼電極、錄 CSV、到跑出臨床等級的 HRV 報告——整條路你都走過一遍
-
用 Claude Code 駕馭陌生的套件
你不需要先學會 NeuroKit2 的 API。把需求描述清楚,Claude Code 會幫你寫出正確的程式
-
理解 HRV 指標的意義
RMSSD 反映副交感神經活性、LF/HF 反映交感/副交感平衡——這些不再只是課本上的名詞,而是你自己身體量出來的數據
-
龐加萊圖的直覺
散點越集中代表心率越穩定,沿對角線的分散程度反映長期變異——看一眼圖就能判斷大致的自律神經狀態
HRV 指標速查
時域(Time-domain)
- SDNN — 所有 RR 間期的標準差。反映整體 HRV。
- RMSSD — 相鄰 RR 間期差值的均方根。反映副交感(迷走)神經活性。
- pNN50 — 相鄰 RR 差值 > 50ms 的比例。同樣反映副交感活性。
頻域(Frequency-domain)
- LF (0.04-0.15 Hz) — 低頻功率。混合交感與副交感。
- HF (0.15-0.4 Hz) — 高頻功率。主要反映副交感活性。
- LF/HF ratio — 交感/副交感平衡的粗略指標。
龐加萊圖(Poincaré Plot)
- SD1 — 垂直對角線的分散度。反映短期(逐拍)變異。
- SD2 — 沿對角線的分散度。反映長期變異。
- 形狀 — 越圓越好(變異均勻),細長扁平可能代表自律神經失衡。
提示:如果課堂上沒錄到好的資料,可以用模擬器 ecg_sim.py 搭配 ecg_plot.py --csv 先錄一段合成資料來練習。交作業時請註明是模擬資料。