arma模型谱估计matlab_基于机器学习的心律失常分类(四)——心电信号特征提取[MATLAB]...

arma模型谱估计matlab_基于机器学习的心律失常分类(四)——心电信号特征提取[MATLAB]..._第1张图片

目前比较常用的特征提取是提取心电信号的各波形间期长度、波峰高度等,本文是使用ARMA模型对心电信号进行处理,使用其系数来作为特征。

一、心拍划分

大多伴有异常波形的心律失常信号,通常都会具体表现在单个心拍中,需要对信号进行心拍划分。心拍信号截取的常见方法之一是以R波位置作为定位点,前后分别截取估计的采样点数。

arma模型谱估计matlab_基于机器学习的心律失常分类(四)——心电信号特征提取[MATLAB]..._第2张图片
R波位置
上图是用matlab找出的R波位置,下面附上代码。但是我直接用的注释文件中标注的R波位置。
%ecg去噪后标记QRS波、R点。

啦啦啦

本文采用的MIT-BIH心律失常数据库以及其中由权威专家标注的R波位置。

arma模型谱估计matlab_基于机器学习的心律失常分类(四)——心电信号特征提取[MATLAB]..._第3张图片
100.dat前十秒R波标注

心律失常的波形异常主要出现在PR间期和QRS波群,本文以R波位置为中心定位点,为了能基本包含所有的波形特性,向前向后各截取150个样本点共计301个样本点作为一个样本心拍。

%去噪后信号&标注信息

本文从MIT-BIH数据库的48条记录种的MLII通道数据中进行心拍划分,总计获取96871个样本心拍,其中正常心拍(N)有74466个,左束支传导阻滞心拍(L)有8051个,右束支传导阻滞心拍(R)有7239个,室性早搏心拍(V)有7115个。

二、ARMA模型

arma模型谱估计matlab_基于机器学习的心律失常分类(四)——心电信号特征提取[MATLAB]..._第4张图片

三、特征提取

在开始设计和使用ARMA模型前首先需要通过定阶来确定阶数,常见的进行定阶的方法有:通过一个序列的自相关函数(ACF)和偏自相关函数(PACF)进行定阶、通过赤池信息量准则(AIC)进行定阶。

根据葛丁飞等人的利用MDL和 MDL敏感性函数作为准则进行模型定阶,或者根据毛雪岷等人所提出的按照信噪比和赤池信息量准则进行定阶,结果都可以表明当 n = 4,m = 2 时,模型拟合得到的信号与原始心电信号最为相似。因此本文选用ARMA(4,2)模型,通过R语言的arima()函数来建立模型,输出拟合的模型系数。

RStudio:

library(readxl)
X100 <- read_excel("D:/DATA/test1.xlsx", col_names = FALSE)
X=X100
N=nrow(X)


ARMAnum=matrix(nrow = N,ncol = 6,byrow = TRUE)

for(i in 1:N){
  TE=X[i,1:301]
  TE=t(TE)
  TE_AR=arima(TE,order=c(4,2,2))
  TE_CO=TE_AR$coef
  for (n in 1:6) {
    ARMAnum[i,n]=TE_CO[n]
  }
}

View(ARMAnum)
  
write.csv (ARMAnum, file ="C:UsersDesktop数据2_处理后数据3_ARMA系数test1.csv")

本文从划分出的心拍中选取四类心拍各1700个,共计6800个样本心拍数据。

arma模型谱估计matlab_基于机器学习的心律失常分类(四)——心电信号特征提取[MATLAB]..._第5张图片
部分正常心电信号样本心拍的ARMA模型拟合系数

然后就可以用ARMA系数作为分类模型的输入进行训练了。

你可能感兴趣的:(arma模型谱估计matlab,matlab截取数组一部分,matlab特征点提取配准拼接,matlab肌电信号去噪程序)