リアルタイム波形 + 周波数スペクトル
原信号
ノイズ混入
フィルタ後
R波・電源
理論・主要公式
$$\text{HR} = \frac{60}{\Delta t_{RR}} \quad [\text{bpm}]$$
心拍数 HR。ΔtRR:連続する R 波間の間隔 [s]。例:ΔtRR=0.8s → HR=75 bpm
$$s(t) = \sum_{k} A_k \exp\!\left(-\frac{(t-t_k)^2}{2\sigma_k^2}\right)$$
ECG 波形モデル(ガウス和近似)。P・QRS・T の各成分を振幅 A_k・時刻 t_k・幅 σ_k で表現
$$\text{SNR} = 10\log_{10}\!\frac{P_{\text{signal}}}{P_{\text{noise}}} \quad [\text{dB}]$$
信号対雑音比 SNR。臨床 ECG では通常 20 dB 以上を確保。ノイズ増大で QRS 検出精度が低下
生体信号解析(ECG)とは
🙋
このシミュレーターで出てくる「QRS波」って何ですか?心電図の山みたいな形ですが。
🎓
大まかに言うと、心臓の心室が収縮するときの電気的活動だよ。一番目立つ山だから、心拍数を数える基準になるんだ。このシミュレーターの「心拍数」スライダーを動かすと、このQRS波の間隔が変わって、波形が速くなったり遅くなったりするよ。確認してみて。
🙋
え、そうなんですか!じゃあ「ノイズレベル」を上げると、波形がガタガタになるのは、実際にどんなノイズを再現してるんですか?
🎓
実務で多いのは、体の動きによる「基線変動」や、筋肉の収縮による「筋電図ノイズ」、コンセントからの「電源ノイズ(50/60Hz)」だね。シミュレーターでノイズを最大にすると、本物の信号が埋もれてしまうのがわかる。だから次の「フィルタカットオフ」調整が重要になるんだ。
🙋
「フィルタカットオフ」を変えると、右の周波数スペクトルの形が変わるけど、あれはどう見ればいいんですか?
🎓
良いところに気づいたね!スペクトルのピークがQRS波の基本周波数だ。ノイズを強くすると高周波や低周波に余計な成分が増えるだろ?フィルタでそれをカットすると、スペクトルがスッキリして、元の綺麗な心電図に近づく。実際の医療現場でも、この周波数解析をしてノイズ源を特定するんだ。
よくある質問
現実の生体信号計測では、筋電図ノイズや電源ノイズ、基線変動などが必ず混入します。本ツールでは、ノイズレベルスライダーでこれらの強度を調整でき、フィルタカットオフを変更することでノイズ除去の効果をリアルタイムに確認できます。
心拍数スライダーを変更すると、次のR波のタイミングから新しいRR間隔が適用されます。そのため、現在表示中の心拍が完了するまで波形の変化が遅れる場合があります。リアルタイムで更新されるRR間隔グラフも併せてご確認ください。
ECGの周波数スペクトルでは、心拍数に対応する基本周波数(例:60bpmなら約1Hz)とその高調波にピークが現れます。ノイズが多いと低周波や高周波に不要な成分が増えるため、フィルタ設定で目的の信号成分を強調できます。
いいえ、本ツールは教育・学習用の簡易シミュレーターです。実際のECG/EEG機器のような精度や臨床的妥当性はなく、診断や治療の判断に使用しないでください。あくまで信号処理の原理理解やパラメータ調整の練習用としてご利用ください。
実世界での応用
不整脈のスクリーニング:24時間ホルター心電図で取得した長時間のECGデータを解析し、期外収縮や心房細動などの不整脈を自動検出します。シミュレーターで学ぶQRS検出アルゴリズムがその中核技術です。
睡眠時無呼吸症候群の評価:睡眠中の心拍変動(HRV)と呼吸に伴う基線変動を分析することで、無呼吸イベントを間接的に推定します。ノイズの中から特定の生理学的信号を抽出する技術が応用されています。
ウェアラブルデバイスの心拍モニタリング:スマートウォッチやリストバンド型デバイスでは、動きによる大きなノイズ(モーションアーチファクト)が混入します。シミュレーターで試せるような適応フィルタや信号処理技術が、正確な心拍数測定を実現します。
手術中モニタリング:手術室では、電気メスなど強力なノイズ源が存在します。患者の生命徴候を継続的に監視するため、リアルタイムでノイズを除去し、QRS波を確実に検出する堅牢な信号処理が要求されます。
よくある誤解と注意点
まず、「ノイズを全部除去すれば完璧」と思いがちな点に注意だ。シミュレーターで「フィルタカットオフ」を強くかけすぎると、確かに波形は滑らかになる。しかし、実際の臨床現場では、波形の鋭い角(高周波成分)に重要な情報が含まれていることもある。例えば、心室性期外収縮の波形は幅が広くなるが、強すぎるフィルタで丸めてしまうと、この特徴を見逃すリスクがある。フィルタリングは「トレードオフ」の作業だと覚えておこう。
次に、「心拍数は一定」という前提。シミュレーターの心拍数スライダーは固定値を設定するが、生身の人間の心拍は常に変動している(心拍変動:HRV)。例えば、安静時でもRR間隔が0.85秒、0.92秒、0.88秒…と微妙に揺らいでいる。この変動そのものが自律神経のバロメータになる。解析時は、短時間の平均心拍数だけでなく、この変動幅にも注目することが重要だ。
最後に、「目立つ山が全てQRS波」という誤認。実際のECGには、アーチファクト(偽信号)が大きな山として現れることがある。例えば、電極のはがれによる基線の大振幅の揺れや、強い筋電ノイズだ。シミュレーターでノイズレベルを最大にすると、QRS波の上に別の山が乗る様子が再現できる。アルゴリズムでQRSを自動検出する際は、振幅だけでなく波形の形状や前後の文脈から総合的に判断する「ロジック」が必要になるんだ。
具体的な計算例
心拍数75 bpmの信号を10秒間生成した場合、サンプリング周波数500 Hzでデータ点数は5,000点になります。RR間隔は60/75=800 msで表示され、ノイズレベルを0.25に設定するとSNRは約16 dB(20·log₁₀(1.6/0.25))となります。LPFカットオフを40 Hzにすると、重畳した50 Hz商用ノイズは約0.55倍に減衰し、QRS波形(既定振幅1.6 mV)が明瞭になります。本ツールは教育用の簡易モデルであり、臨床診断には使用できません。