利用ECG信号进行HRV分析

标签:
matlab数字信号处理hrv心率异常性 |
分类: 学习记录 |
最近在看Prof.
Husar的的书--Biosignalverarbeitung,在信号特征的章节提到了HRV这个概念。当时在课上讲的时候也没认真听懂,现在看来Husar的每节课都是很重要的,在结合维基百科和Matlab程序的基础上,自己也算是入门了。
一、HRV的一些医学概念
HRV(HeartRateVariability,中文为心率变异度),在医学上有重要的意义。心脏除了本身的节律性放电引发的跳动之外,也受到自律神经系统所调控。过去二十年已有不少文献显示自律神经系统的调控与心血管疾病相关的死亡率有显著的关系,例如心因性垂死、高血压、出血性休克、败血性休克等。心率变异分析亦被发现可作为预测发生心肌梗塞后的死亡率的指标及预测末期肝癌病患的预后。
HRV的周期频率一般被分为三部分,通过时频域变换可以得到VLF、LF、HF分别对应超低频(<0.04Hz)、低频段(0.04-0.15Hz)、高频段(0.15-0.4Hz),每个频段的功率(或者说幅度)都代表了不同的生理信息,利用离散傅立叶变换将心跳间隔的时间序列转换为频域,以功率频谱密度(Power
spectral density)或是频谱分布(Spectral
distribution)的方式表现。一般心率变异讯号的频谱分析使用200至500连续心跳间期稳定记录表现,因此记录需要数分钟的时间。
一般的心跳间期频谱频率出现在1赫兹以下,在0到0.4赫兹的范围内可找到数个波峰。主要为高频区(0.15-0.40赫兹)及低频区(0.04-0.15赫兹)。高频区通常反映副交感神经的活性,低频区同时受到交感与副交感神经系统的调控。在这里摘录维基百科的一个表格,请看附录!
二、信号分析
- 时域分析 (Time domain)
-
通常利用连续量测到的心电图波形,直接计算与分析其相连心跳间时间序列的关系,例如:
- SDNN (Standard Deviation of Normal to Normal),全部正常心跳间距之标准差,单位为毫秒。
- SDANN (Standard deviation of the averages of NN intervals in all 5-minute segments of the entire recording),全程依五分钟分成连续的时段,先计算每五分钟心跳间期的标准差,再计算标准差的平均值,单位为毫秒。
- NN50 count (Number of pairs of adjacent NN intervals differing by more than 50 ms in the entire recording),心电图中所有每对相邻正常心跳时间间隔,差距超过50毫秒的数目。
- pNN50 (NN50 count divided by the total number of all NN intervals),NN50数目除以量测之心电图中所有的正常心跳间隔总数。
- 频域分析 (Frequency domain)
HRV代表了心动周期的变化,所以我们首先要求出每个变化着的周期的具体值,一般方法是找到每个周期识别点,比如过零点、最大最小极值点以及一些能够容易检测到的点,在ecg信号中我们一般采用RR点之间的时间作为对应的周期,所以第一步是检测ecg信号的R点;第二步就是要计算出每个周期值,也就是RR点之间的时间值,这个在matlab中很好实现;因为HRV周期是随时间变化的函数,而且一般对应的周期点数有限,说以在fft之前进行插值计算是必要的,第三步,插值法;最后一步进行fft变换,得到HRV的频谱图,剩下的分析就交给医生了。
三、Matlab程序实现
按照上面所说的四个步骤,下面的程序分为四段,有详细的说明,请读者自行阅读,有不懂的请留言!
close all;
clear;
clear;
load ekg.mat;
%读入ecg信号
[map,r,delay]=pan_tompkin(ecg,fs,0);
% 利用pan_tomkin算法找到R点
[map,r,delay]=pan_tompkin(ecg,fs,0);
[a,l]=size(r);
for i=2:l;
t(i-1)=r(i)-r(i-1);
%求出R-R间的时间值,即使HRV
end
for i=2:l;
end
x=r(2:19);
y=interp1(x,t,r(2):1:r(19),'spline');
%利用插值法求出以原ecg信号的采样率fs的拟合函数
plot(y);hold on,
scatter(r(2:19)-r(2),t(1:18));
y=interp1(x,t,r(2):1:r(19),'spline');
plot(y);hold on,
scatter(r(2:19)-r(2),t(1:18));
N=length(y);
N1=20;
%确定频率轴的范围 每一单元为fs/N=0.06Hz
AF=fft(y);
AF=abs(AF);
%求出傅里叶变换后的幅频特性
f=(0:N1-1)*fs/N;
figure,plot(f,AF(1:N1));
%这一步是对fft的频率轴进行一定的变化,但是不会影响到fft的具体信息,只是为了方
N1=20;
AF=fft(y);
AF=abs(AF);
f=(0:N1-1)*fs/N;
figure,plot(f,AF(1:N1));
四、Matlab结果截图
http://s15/mw690/006zl53Zzy76UqZWkuG7e&690
http://s16/mw690/006zl53Zzy76Urkoqzd0f&690
五、简单的分析说明
六、附录
指标 | 单位 | 定义 | 频谱范围 | 临床意义 |
---|---|---|---|---|
总功率 total power, TP |
ms2 | 全部正常心跳间期之变异数高频、低频、极低频的总和 | ≤0.4Hz | 整体心律变异度评估 |
极低频范围功率 very low frequency power, VLFP |
ms2 | 极低频范围正常心跳间期之变异 | ≤0.04Hz | 生理意义不明 |
低频范围功率 low frequency power, LFP |
ms2 | 低频范围正常心跳间期之变异数 | 0.04-0.15Hz | 代表交感与副交感神经活性 |
高频范围功率 high frequency power, HFP |
ms2 | 高频范围正常心跳间期之变异数 | 0.15-0.4Hz | 代表副交感神经活性 |
标准化低频功率 normalized LFP, nLFP |
标准化单位,n.u. | LF/(TP-VLF) | 交感神经活性
定量指标 |
|
标准化高频功率 normalized HFP,nHFP |
标准化单位,n.u. | HF/(TP-VLF) | 副交感神经活
性定量指标 |
|
低、高频功率的比值 LF/HF |
无单位 | 低、高频功率的比值 | 代表自律神经
活性平衡 |
后一篇:德国行政区域划分介绍