心电数据处理与分析课程设计.docx
- 文档编号:29901230
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:23
- 大小:224.77KB
心电数据处理与分析课程设计.docx
《心电数据处理与分析课程设计.docx》由会员分享,可在线阅读,更多相关《心电数据处理与分析课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
心电数据处理与分析课程设计
目录
1、设计目的、意义…………………………………………………………………1
2、设计内容………………………………………………………………………1
2.1内容…………………………………………………………………………1
2.2要求……………………………………………………………………………1
2.3工作原理………………………………………………………………………1
3、结果分析………………………………………………………………………14
3.1心电图上的各种波形………………………………………………………14
3.2心电信号噪声分析…………………………………………………………15
4、设计心得………………………………………………………………………19
参考文献…………………………………………………………………………21
1设计目的、意义
进行改革,增大学生的自主选择权,让学生发展自己的兴趣,塑造自己未来的研究发展方向。
课程设计的主要目的:
(1)培养学生文献检索的能力,特别是如何利用Internet检索需要的文献资料。
(2)培养灵活运用所学的电力电子技术知识和创造性的思维方式以及创造能力。
(3)培养学生综合分析问题、发现问题和解决问题的能力。
(4)培养学生用maltab处理图像与数据的能力。
2设计内容
2.1设计要求:
要求设计出心电数据处理的处理与分析程序。
(1)处理对象:
心电数据;
(2)内容:
心电数据仿真,心电数据处理(仿真数据,真实数据);
(3)结果:
得到处理结果。
2.2设计内容:
(1)心电数据仿真;
(2)心电数据处理;
(3)分析处理结果。
(4)可视化界面设计
2.3实验原理
2.3.1心电产生原理及心电图
我们常说的心电图一般指体表心电图,反映了心脏电兴奋在心脏传导系统中产生和传导的过程。
正常人体的每一个心动周期中,各部分兴奋过程中出现的电变化的方向、途径、次序和时问都有一定的规律,这种生物电变化通过心脏周围的导电组织和体液,反映到身体表面,使身体各部位在每一心动周期中也出现有规律的电变化。
在人体不同部位放置电极,并通过电联线与心电图机的正负极相连,在心电图机上便可以记录到周期变化的心电图。
心电图是通过二次投影形成的。
整体心肌细胞的除极和复极所产生的每一瞬l’日J的除极、复极综合向量轨迹,在立体心脏的三维空『日J内按时问顺序将其顶端相连,便构成立体心向量环。
立体心向量环在额面和横面的投影,形成平面的心向量环;将平面向量环在导联轴上进行二次投影,就形成相应的心电图。
对于标准的12导联来说,额面心向量环在肢体导联上的投影,形成I、II、Ill、avR、avL、avF导联心电图,而横面心向量环在胸导联轴上的投影便形成了V1~V6导联心电图m。
不同导联记录到的心电图,在波形上有所不同,但基本上都包括一个P波,一个QRS波和一个T波,有时候在T波后还出现一个小u波。
正常的心电图如图卜1所示,下面列出各种波形的定义和生理参数。
图2.1正常心电图
(1)P波:
代表左右心房去极化过程的电位变化。
其波形小而圆钝。
P波在不同导联上的形状可能有差异,在avR导联的P波倒置,在其它的导联中则以向上的正波为主,尤其以II和avF导联最为明显。
历时0.08~O.11s,波幅不超过0.25mv。
(2)QRS波:
代表左、右两心室去极化过程的电位变化。
历时0.06~0.10s。
典型的QRS波包含三个紧密相连的波,第一个向下的波为Q波,其后向上的高而尖的为R波,继R波之后的一个向下的为S波。
但是在不同导联记录的心电图上这三个波不一定都出现,其波形和幅度变化也较大。
(3)T波:
代表心室快速复极化过程中的电位变化。
波形圆钝,历时0.05~0.25s,波形的前肢较长而后肢较短。
T波的方向与QRS波的主波方向一致,在R波为主的导联中,T波的幅度不应低于R波的1/10。
(4)P.R间期:
由P波起点到QRS波起点之问的I’日J期,代表自心房除极开始至心室除极的时『日J。
正常成人为0.12~0.20s。
在幼儿及心率较快的情况下,P.R问期相应缩短;而经常进行体育锻炼的人,如职业运动员,其P—R问期较长,有的可超过0,20s。
(5)s.T段:
自QRS波终点至T波起点之问的线段,代表心室缓慢复极过程。
正常的ST段多为一等电位线,有时也可有轻微的偏移。
在任一导联,ST段下移一般不应超过0.05mv,ST段上抬在V1,V2导联不超过0.3mv,在V3不超过0.5mv,在V4~V6导联与肢体导联不应超过0.1mv。
(6)Q.T间期:
从QRS波群起点至T波终点的时程,代表心室肌除极和复极全过程所需要的时『自J。
这一时问的长短与心率密切相关。
心率越快,Q.T问期越短;反之,则问期越长。
心率在60~100次/分时,Q-T怄l期的证常范围为0.32~0,44s。
由于Q-T问期受心率的影响,临床常用校J下的Q.T间期,通常采用Bazett公式计算Q乃=QT/4Rfi。
Q正就是R—Rf.日J期为ls(心律60次/分)时的Q.T问期。
Q正,的正常上限值为0.44s。
(7)U波:
在T波后0.02~0.04s可能出现的低而宽的波,代表心室后继电位。
其方向一般与同导联T波方向一致,幅度较T波低。
u波在肢体导联中不易辨认,一般在胸导联中比较清楚。
2.3.2首先利用二维plot函数将心电数据生成心电图
①心电数据(170):
表1心电数据
-2.90
-8.17
-9.14
-7.27
-4.50
-1.78
-0.23
-0.04
0.11
-0.03
-0.15
-0.16
-0.10
0.10
0.70
2.05
5.52
7.26
7.62
5.51
2.29
-0.83
-2.79
10.08
9.41
6.17
2.43
5.12
5.44
2.43
1.84
1.57
0.74
-0.65
-0.16
-0.07
-1.15
-2.94
-0.69
6.23
9.05
9.93
9.50
6.73
3.18
1.86
2.64
2.84
2.33
2.43
2.30
1.50
1.11
1.02
1.30
1.10
1.40
2.33
3.30
3.09
3.16
3.18
3.42
3.63
4.06
4.46
3.92
3.97
2.72
2.52
2.66
4.92
5.46
6.47
5.20
7.89
11.10
1.15
-2.02
0.46
8.07
5.87
4.92
15.86
15.98
9.76
1.87
-6.56
-9.62
-9.62
-6.67
-2.34
0.19
-0.07
-1.46
-1.58
-1.40
-1.40
1.19
2.00
4.32
6.14
7.71
7.86
7.15
5.78
3.54
0.31
0.27
7.26
12.46
8.68
7.40
7.42
8.79
5.11
2.60
2.28
1.15
0.30
-1.27
-2.01
-1.83
-3.79
-1.16
6.05
7.07
6.74
6.70
5.04
2.62
1.91
2.00
2.20
1.47
1.64
2.44
3.55
4.06
3.87
4.36
4.40
3.82
3.01
1.97
2.09
1.34
0.51
0.29
1.51
2.49
4.51
6.93
6.27
7.95
13.05
4.07
-3.90
1.78
8.66
10.70
3.05
14.35
16.71
13.18
4.59
-3.68
-7.44
-8.17
-6.36
心电数据存储在maltab\work\ECG.txt文本文件里。
②心电数据生成心电图程序代码:
ECG=load('ECG.txt');
a=length(ECG);
t=[1/a:
1/a:
1]
y=ECG(:
1);
plot(t,y);
title('含噪心电信号');
xlabel('时间(ms)');
ylabel('幅度(dB)');
③心电图:
图2.2心电图
2.3.3对所生成的心电图进行滤波
一般情况下,我们所要分析的心电数据都存在着不同程度的噪声。
噪声本身就是异常的结构,尤其对于本研究来讲,如果除噪效果不好,很容易就误将噪声识别为奇异结构,这就使得整个研究失去意义。
因此,本研究对心电时间序列的除噪提出了更高的要求。
为了使我们的分析、处理尽量免受噪声的干扰,我们在对心电信号进行分析、处理之前,先对心电数据进行除噪处理。
本模块基于Matlab平台,采用Matlab工具包中提供的小波基函数〔’6〕设计小波滤波器,来提取高频干扰信号;采用MatIab形态学函数中的开运算和闭运算函数〔’了〕提取基线漂移信号;并将所提取的高频干扰信号和基线漂移信号作为参考输入,通过编写Matlab代码完成自适应滤波器〔’川的设计,进而完成整个除噪模块的设计。
①小波滤波程序及代码:
%mallet_wavelet.m
%此函数用于研究Mallet算法及滤波器设计
%此函数仅用于消噪
a=pi/8;%角度赋初值
b=pi/8;
%低通重构FIR滤波器h0(n)冲激响应赋值
h0=cos(a)*cos(b);
h1=sin(a)*cos(b);
h2=-sin(a)*sin(b);
h3=cos(a)*sin(b);
low_construct=[h0,h1,h2,h3];
L_fre=4;%滤波器长度
low_decompose=low_construct(end:
-1:
1);%确定h0(-n),低通分解滤波器
fori_high=1:
L_fre;%确定h1(n)=(-1)^n,高通重建滤波器
if(mod(i_high,2)==0);
coefficient=-1;
else
coefficient=1;
end
high_construct(1,i_high)=low_decompose(1,i_high)*coefficient;
end
high_decompose=high_construct(end:
-1:
1);%高通分解滤波器h1(-n)
L_signal=100;%信号长度
n=1:
L_signal;%信号赋值
f=10;
ECG=load('ECG.txt');
a=length(ECG);
t=[1/a:
1/a:
1]
y=ECG(:
1);
plot(t,y);
title('含噪心电信号');
xlabel('时间(ms)');
ylabel('幅度(dB)');
figure
(1);
plot(y);
title('原信号');
check1=sum(high_decompose);%h0(n)性质校验
check2=sum(low_decompose);
check3=norm(high_decompose);
check4=norm(low_decompose);
l_fre=conv(y,low_decompose);%卷积
l_fre_down=dyaddown(l_fre);%抽取,得低频细节
h_fre=conv(y,high_decompose);
h_fre_down=dyaddown(h_fre);%信号高频细节
figure
(2);
subplot(2,1,1)
plot(l_fre_down);
title('小波分解的低频系数');
subplot(2,1,2);
plot(h_fre_down);
title('小波分解的高频系数');
结果图:
图2.3心电图原图
图2.4小波分解图
②50HZ滤波:
程序代码:
生成一个ideal_lp.m文件
functionhd=ideal_lp(wc,M)
alpha=(M-1)/2;
n=0:
M-1;
m=n-alpha+eps;%eps为很小的数,避免被0除
hd=sin(wc*m)./(pi*m);%用Sinc函数产生冲击响应
将ideal_lp.m文件放在matlab\work里
ECG=load('ECG.txt');
a=length(ECG);
t=[1/(a):
1/(a):
1];
y=ECG(:
1);
plot(t,y);
%其中,具有线性相位的FIR低通滤波器由如下函数实现:
%理想低通滤波器
%截止角频率wc,阶数M
%50Hz工频干扰陷波器
%50Hz陷波器:
由一个低通滤波器加上一个高通滤波器组成
%而高通滤波器由一个全通滤波器减去一个低通滤波器构成
M=800;%滤波器阶数
L=800;%窗口长度
beta=8;%衰减系数
Fs=400;
wc1=51/(Fs/2)*pi;%wc1为高通滤波器截止频率,对应51Hz
wc2=49/(Fs/2)*pi;%wc2为低通滤波器截止频率,对应49Hz
h=ideal_lp(pi,M)-ideal_lp(wc1,M)+ideal_lp(wc2,M);%h为陷波器冲击响应
w=kaiser(L,beta);
b=h.*rot90(w);%b为50Hz陷波器冲击响应序列
x=filter(b,1,y);%滤除50Hz工频干扰的心电信号
plot(t,x);
title('含噪心电信号');
xlabel('t');
ylabel('x');
图2.550HZ陷波波形
2.3.4可视化部分:
图2.6可视化界面
程序如代码:
functionvarargout=keshi(varargin)
%keshiM-fileforkeshi.fig
%keshi,byitself,createsanewkeshiorraisestheexisting
%singleton*.
%
%H=keshireturnsthehandletoanewkeshiorthehandleto
%theexistingsingleton*.
%
%keshi('CALLBACK',hObject,eventData,handles,...)callsthelocal
%functionnamedCALLBACKinkeshi.Mwiththegiveninputarguments.
%keshi('Property','Value',...)createsanewkeshiorraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforekeshi_OpeningFunctiongetscalled.An
%unrecognizedpropertynameorinvalidvaluemakespropertyapplication
%stop.Allinputsarepassedtokeshi_OpeningFcnviavarargin.
%
%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone
%instancetorun(singleton)".
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
%Edittheabovetexttomodifytheresponsetohelpkeshi
%LastModifiedbyGUIDEv2.525-Jun-201008:
26:
05
%Begininitializationcode-DONOTEDIT
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@keshi_OpeningFcn,...
'gui_OutputFcn',@keshi_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
});
end
%Endinitializationcode-DONOTEDIT
%---Executesjustbeforekeshiismadevisible.
functionkeshi_OpeningFcn(hObject,eventdata,handles,varargin)
%Thisfunctionhasnooutputargs,seeOutputFcn.
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%varargincommandlineargumentstokeshi(seeVARARGIN)
%Choosedefaultcommandlineoutputforkeshi
handles.output=hObject;
%Updatehandlesstructure
guidata(hObject,handles);
%UIWAITmakeskeshiwaitforuserresponse(seeUIRESUME)
%uiwait(handles.figure1);
%---Outputsfromthisfunctionarereturnedtothecommandline.
functionvarargout=keshi_OutputFcn(hObject,eventdata,handles)
%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%Getdefaultcommandlineoutputfromhandlesstructure
varargout{1}=handles.output;
%---Executesonbuttonpressinpushbutton1.
functionpushbutton1_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton1(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
I=imread('Ôͼ.jpg');
figure;
imshow(I);
%---Executesonbuttonpressinpushbutton2.
functionpushbutton2_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton2(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
I=imread('С²¨.jpg');
figure;
imshow(I);
%---Executesonbuttonpressinpushbutton3.
functionpushbutton3_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton3(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
I=imread('50HZÂ˲¨.jpg');
figure;
imshow(I);
%---Executesonbuttonpressinpushbutton4.
functionpushbutton4_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton4(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
close
3结果分析
3.1心电图上的各种波形
一次心动周期就会在新电图上记录出一系列地高低宽窄不同的波形。
包括P波、QRS波群、T波和(无)u波。
了解这些波形及其所代表的意义,是教你怎么看心电图的第二步。
P波,最先出现的一个振幅不高的圆
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 心电数据处理与分析 课程设计 数据处理 分析