当前位置:文档之家› 虚拟仪器大作业实验报告

虚拟仪器大作业实验报告

东南大学生物科学与医学工程学院虚拟仪器实验报告大作业实验名称:基于MIT-BIH 心率失常数据库的心电信号系统的设计专业:生物医学工程姓名:学号:同组人员:学号:实验室:实验时间:评定成绩:综合楼716 2013/11/28审阅教师:目录一.实验目的二.实验内容基于MIT-BIH心率失常数据库的心电信号系统的设计1.实验要求和说明2.程序设计流程图3.程序各版块介绍说明4.前面板的设计5.调试过程6.结果及分析三.实验收获及小结四.参考文献一.实验目的现代医学表明,心电信号(ECG)含有临床诊断心血管疾病的大量信息,ECG 的检测与分析在临床诊断中具有重要价值,是了解心脏的功能与状况、辅助诊断心血管疾病、评估各种治疗方法有效性的重要手段。

本次大作业利用具有直观图形化编程和强大数字信号处理功能的虚拟仪器编程语言L abVIEW作为开发平台,设计一个基于虚拟仪器的简单心电信号分析系统,该系统具有心电信号的读取,处理分析,波形显示、心率显示及报警,波形存储和回放等功能。

二.实验内容1.实验内容及要求基于MIT-BIH心率失常数据库的心电信号系统的设计1. 本次大作业所用原始信号是从MIT-BIH(Massachusettes Institute ofand Beth Israel Hospital,美国麻省理工学院和波士顿贝丝以色列医院)心率数据库(/physiobank/database/mitdb/)中选取心电信号作为实验分析的数据。

设计的系统要求对原始心电信号进行读取、绘制出其时域波形,利用原始心电数据中的时间数据控制显示时间,并具有保存回放功能,同时具有心率过快或过缓报警提示功能。

2.心电信号是微弱低频生理电信号,通常频率在0.05Hz~100Hz,幅值不超过4mV,它通过安装在皮肤表面的电极来拾取。

由于实际检测工况的非理想,在ECG 信号的采集过程中往往会受到工频噪声及电极极化等各种随机噪声的影响。

噪声的存在降低了诊断的准确性。

其中影响最大的是工频干扰和基线漂移噪声。

因此,在ECG 信号检测过程中,如何抑制工频干扰和基线漂移等是必须解决的问题。

要求选择并设计合适的滤波器,除去所给心电信号的工频干扰和基线漂移。

2.检测心率:检测信号心电的R波,计算平均心率和实时心率(R-R波时间间隔的倒数),并显示实时心率和平均心率。

3.对任一路心电信号滤波前后的信号进行时域分析和频谱分析,分别显示出结果。

提高部分:由于原始信号数据并不是等间隔采样而得到的,而L abview中用数字滤波器1.处理的数据要求等间隔的,由此需要对原始数据做一次线性插值处理,使其成为均匀数字信号,以便后面的信号进行频域谱分析。

提示:根据原文件心电信号的特点,时间间隔设置成0.001s ,采用一次线性插值。

2. 对所给的心电信号进行特征点的提取。

各波时距的测量,P-R 间期 Q-T 间期 的测量。

能显示心电信号特征参数。

3. 使用 Report Generation Toolkit for Microsoft Office 设计一个报表生成程序, 要求报表中显示标题栏,测试数据、和心电波形图,包含监测开始时间、结 束时间、监测总时间长度、监测期间平均心率、心率最大值、心率最小值、 监测期间实时心率的波形图。

4. 为了保护用户信息安全,登陆系统时要求设置用户登录模块。

当用户运行程 序时,程序会自动弹出需要输入用户名和密码的口令信息对话框,输入不正 确则不能进入运行状态,此外,还有相应的注册用户模块,删除用户模块, 修改密码模块等。

2.程序流程图口令错误,重新输入口令登录登录口令正确是否否位未处理完毕数据处理完毕进行显示否进行数据存储记录吧从网站上下载的 dat 文件中读取数据读取数据之后进行数据处理,将两个通道的数据分开并且整理成 12 将数据转化成十进制进行处理输入用户名和密码进行 数据处理完之后用波形图和滤波前频谱分析 计算和显示平均心率,瞬时心率 是否进行数据回放进行滤波处理,去除基线漂移和工频干扰进行滤波后的频谱分析和显示进行滤波后的波形显示进行数据回放存储数据判断心率是否有异常3.程序各版块数据的读取和处理模块1.首先是读取数据文件部分,先添加一个文件对话框,并对文件类型和文件打开提醒进行设置,然后加入一个打开文件函数,设置其权限和操作和。

前期工作完成之后,就可以用二进制文件来读取数分别为据了。

2.关于数据的处理部分,第一道导联12 位数据的低8 位存在第一字节中, 高4 位存在第二字节的前4位中; 第二道导联12 位数据的低8位, 存在第三字节中, 高4 位存在第二字节的后4 位中。

用索引函数将三个数据分别读取,然后对第二个数据进行处理,第二个数据与进行操作后得到低四位,然后用拼接函数与第三个数据进行拼接就得到了第二道导联数据;第二个数据进行右移四位操作后保留高四位,然后用拼接函数与第一个数据拼接就得到了第一=导联数据。

然后对得到的数据变成十进制数进行处理。

3.在读取数据时,由于是三个数据一处理,所以建立的for 循环的循环次数应该是数据长度/3.滤波模块1.因为基线漂移部分都是频率非常小的波,我们选择了Butterworth 的带通滤波器,高截止频率为100HZ,低截止频率为0.5HZ,滤除了原本波形中0.05HZ~0.5HZ的部分,这样可以较好的去除基线漂移。

2.为了去除工频干扰部分,在带通滤波器后面加入一个等波纹带阻滤波器,根据实验要求设置其高通带截止频率和低通带截止频率分别为100和0.05,然后根据实验滤波部分的要求将低阻带截止频率和高阻带截止频率分别设置为59 和61,这样就可以滤去工频干扰。

3.在已经滤去了基线漂移和工频干扰的情况下,为了达到更好地滤波效果在等波纹带阻滤波器后面加入一个3 阶切比雪夫滤波器,将波形滤除的更加完整。

4.因为实验说明中采样频率为360.所以我们的滤波器的采样频率一率采取了360,这样滤波效果更明显一点。

频谱分析模块1.由于要进行滤波前后的频谱分析对比,所以频谱分析模块要在滤波前后都加入。

2.首先要把处理后的数据表现成波形形式,用波形生成函数并对其接线端子进行相应设置。

3.在波形生成之后加入两个频谱函数幅度谱相位谱函数,并在后面进行相应的显示波形图连接。

进行波形生成,和FFT 实部虚部函数4.滤波后的频谱分析与上面一样,波形图生成之后,将两个频谱图放在一起进行对比分析。

数据记录与回放模块1.首先在整体框图外面建立一个case 结构,case 结构的条件判断为。

条件为真代表回放,条件为假代表不回放。

执行程序时先选择条件假,将数据写入文件;然后再执行条件真,回放数据波形。

2.将写入文件的程序框图放入条件为假的结构中,将读取文件的程序框图放入条件为真的结构中。

3.写入文件时,首先将动态数据转换成数组,然后将X 和Y 分别写入一个一维的电子表格文件,读取时只要用电子表格文件读取再转换成动态数据直接连接到波形图上显示就可以了。

4.需要特别注意的是,在提醒保存文件位置的对话框出来之后一定要按顺序分别存入x1,y1,x2,y2。

读取的时候提醒读取文件位置的对话框出来之后也一定要按顺序选择,否则波形会错乱。

显示心率和判断心率异常模块1.首先用波峰检测函数来找出波峰个数,然后将每个波峰的位置传给索引数组函数,然后将找到的波峰个数减一后送入索引位置,这样就可以输出最后一个波峰的横坐标(即所有RR间期的总长度),然后除以波峰的个数就可以的算出一个RR间期的长度。

2.用RR 间期的长度除以采样周期就可以的得到一个RR间期所需时间,然后求出平均一分钟内出现了几个RR 周期(即平均心率)。

3.求瞬时心率时,建立一个输入变量,选择所需时刻的心率。

然后求出这一时刻离哪一个波峰最近,求出这一波峰的位置和上一个波峰的位置进行相减姐可以得出瞬时RR间期的长度,然后同上面一样求出瞬时心率。

4.用输入控件选择心率上限和心率下限,然后将平均心率进行比较,如果在上下限范围之内则显示心率正常,否则显示心率异常。

登陆(用户名和密码)模块1.首先建立一个while 结构,接下来在while结构里面设置一个条件结构的嵌套。

2.外层的条件结构用来判断是否登录,内层的条件结构用来判断用户名和密码是否正确。

3.建立局部变量字符串和访问确认,为后面的用户名口令正误做准备。

4.建立两个字符串输入变量,分别用作用户名和口令的输入,在外层的条件结构中加入两个字符串常量,设置为你自己的用户名和口令,如果输入变量中的用户名和口令与字符串常量设置的用户名口令相匹配,那么内层条件为真,可以继续执行下面的程序;如果不匹配则外层条件结构中的字符串输出变量则会显示“口令错误”。

5.这里的注意事项是,每启动一次程序就必须验证一次用户名和口令,并不是只要打开程序执行时输入用户名口令登陆就可以了,只要程序停止即使未关闭下次运行就必须再次登陆(但是用户名和口令不必再次输入,只要点登录就可以了)。

4.前面板的设计说明1.首先因为本次实验前面板要显示的图形比较多,所以首先在前面板上建立几个选项卡。

2.第一个选项卡放登录界面、数据显示和第一通道波形显示及滤波后波形;第二选项卡放入第二通道波形及滤波后波形;第三选项卡放入第二通道波形滤波前的幅频分析显示;第四选项卡放入第二通道波形滤波后的幅频分析显示;最后一个选项卡放入回放的第一通道和第二通道波形。

3.登陆界面:建立两个字符串输入控件,分别用来输入用户名和口令;在建立一个字符串显示控件:当输入用户名和口令之后会显示用户名和口令是否匹配,匹配显示口令正确进入程序;不匹配则显示口令错误,自动消除错误口令,再次输入。

加入一个布尔按钮并命名为登陆,再添加一个布尔指示灯,若用户名口令正确则亮起一下(加了延时程序),若用户名口令错误则不亮。

4.数据显示界面,添加一个布尔指示灯,设置属性使心率正常时绿灯亮,心率有异时红灯亮起。

添加是三个输入控件,分别是心率上限、心率下限和瞬时心率的时刻选择;然后添加三个输出空间,分别是平均心率、瞬时心率和心电图总时间.5.波形回放:波形回放界面添加一个布尔指示灯,开始运行程序时设置为红色,表示先记录数据,然后在程序执行完毕之后,将指示灯改为绿色,再次执行程序进行读取。

6.由于其他都是波形显示界面,只要添加显示的波形图即可,因此在这里不再过多说明。

5.调试过程1.实验刚开始的数据处理部分就遇到了很大困难,由于这次的数据文件不同以往,数据并不完整,是以特殊形式存放的,再加上对很多实用的函数不了解所以无从下手。

第一次试着用电子表格文件来读取数据,然后用索引数组进行数据处理,但是波形显示出来不正常。

然后便调整了读取方式,通过对索引数组,右移函数,十进制数据转换函数和整合函数结合使用,最后终于成功解决了数据处理部分的难题,而且也学到了很多新函数的使用方法。

相关主题