资源描述
信号与系统课程设计
课题一 心电信号分析系统的设计
一、 本课题的目的
本设计课题主要研究数字心电信号的初步分析方法及滤波器的应用。通过完成本课题的 设计,拟主要达到以下几个目的:
(1) 了解基于 LabVIEW 的虚拟仪器的特点和使用方法, 熟悉采用 LabVIEW 进行仿真
的方法。
(2)了解人体心电信号的时域特征和频谱特征。
(3)进一步了解数字信号的分析方法;
(4)通过应用具体的滤波器进一步加深对滤波器的理解。
(5)通过本课题的设计,培养学生运用所学知识分析和解决实际问题的能力。
二、课题任务
利用 labVIEW 设计一个基于虚拟仪器的简单的心电信号分析系统。对输入的原始心电 信号,进行一定的数字信号处理,进行频谱分析。根据具体设计要求完成系统的程序编写、 调试及功能测试。
(1)对原始数字心电信号进行读取,由数字信号数据绘制出其时域波形。
(2) 对数字信号数据做一次线性插值, 使其成为均匀数字信号, 以便后面的信号分析。
(3)根据心电信号的频域特征(自己查阅相关资料),设计相应的低通和带通滤波器。
(4)编程绘制实现信号处理前后的频谱,做频谱分析,得出相关结论。
(5)对系统进行综合测试,整理数据,撰写设计报告。
三、主要设备和软件
(1) PC 机一台。
(2) LabVIEW 软件一套,要求最低版本 8.20。
四、设计内容、步骤和要求
必做部分:
1. 利用 labVIEW读取 MIT-BIH数据库提供的数字心电信号,并还原实际波形
美国麻省理工学院提供的 MIT-BIH 数据库是一个权威性的国际心电图检测标准库,近 年来应用广泛,为我国的医学工程界所重视。 MIT-BIH 数据库共有 48 个病例,每个病例数 据长 30min,总计约有 116000 多个心拍,包含有正常心拍和各种异常心拍,内容丰富完整。
为了读取简单方便,采用其 txt 格式的数据文件作为我们的原心电信号数据。利用 labVIEW 提供的文件 I/O 函数,读取 txt 数据文件中的信号,并且还原实际波形。
1
信号与系统课程设计
2.对原始心电信号做线性插值处理
由于原始心电信号数据不是通过等间隔采样得到的, 也就是说原始的心电数据并不是均 匀的,而用 Matlab 中提供的数字滤波器处理数据时,要求数据是等间隔的。因此设计的系 统首先应对原始心电信号做线性插值处理, 使其变为等间隔的数字信号, 否则直接处理后会 出现偏差,根据心电信号的特点, 把时间分隔成 0.001s 。添加的幅值点采用一次线性插值。
对二维数据进行插值,相连幅值间数据的插值根据时间进行,运算公式如下 :
t = t t N = t / 0 .001 , A = A A t = t + 0 .001 A = A + A / N
i i 1, i i 1, j j 1 , j j 1
其中 t i 是第 i 个数据时间点, Ai 是与之对应的数据, N 是两数据之间需要的插值数, A 是
需要插值的两点数据差, i = 1,2,3,… arraysize , j = 1,2,3,… N 1,t = t , A = A ,
j 1 i 1 j 1 i 1
i, j = 1时数组t, A 依次排列,即得到了插值后等间隔的新数据。
j j
3.根据心电信号的频域特征,设计相应的低通和带通滤波器
一般正常人的心电信号频率在 0.7~100HZ 范围内, 幅度为 10 V (胎儿)~5mV(成人) 。 人体心电信号微弱,信噪比小,因此,在采集心电信号时,易受到仪器、人体活动等因素的 影响, 而且所采集的心电信号常伴有干扰。 采集心电数据时, 由于人的说话呼吸, 常常会混 有约为 0. 1Hz 到 0.25Hz 频段的干扰, 对于这些低频干扰, 可以让信号通过一个高频滤波器, 低截止频率设置为 0.25,来滤除低频信号,对于高频信号干扰,可以让信号再通过一个低频 滤波器,其中截止频率设置为 99Hz。也可以直接应用带通滤波器设计。
根据以上说明,利用 labVIEW 中的信号处理函数设计相应滤波器,滤除数字信号中的 干扰信号。
4.对处理前后的心电信号分别做频谱分析,分析结果
利用 labVIEW 对处理前后的心电信号编程显示其频谱, 分析比对滤波处理前后的频谱, 得出结论。
如果分析频谱,滤波效果不明显,则需变动滤波器参数指标,重新设计滤波器。通过频 谱分析,多次试验确定最合适的滤波器。
5.系统界面设计
综合前面几步, 设计出一个完整的系统, 并且本着简洁的原则, 设计友好的人机交互界 面。
选作部分:
1. 三种滤波器设计
分别设计 Butterworth、 Chebyshev、 Inverse Chebyshev 三种滤波器,并对滤波后的信号
2
信号与系统课程设计
分别做频谱分析,比较几种滤波器的差别。
2.设计 50HZ 工频陷波器
由于电子设备采集到的信号经常会混有电源线干扰。 电源线干扰是以 50 Hz 为中心的窄 带噪声,带宽小于 1Hz。设计相应滤波器滤除电源线干扰,并对处理后的信号做频谱分析。
五、课程设计报告要求
(1)设计报告书包括内容:课程设计题目,课程设计目的和意义,设计方案,详细设 计步骤,设计结果(原理图等),测试和仿真结果(图形或数据)及其分析,其它有明确要 求的设计内容,结论,参考文献等。
(2) 提交课程设计报告时应同时提交相关设计和仿真分析材料 (框图、 程序、 结果等) 的电子版。
六、参考文献
[1] 陈锡辉,张银鸿编著.LabVIEW 8.20 程序设计从入门到精通[M].北京:清华大学出 版社, 2007.
[2] 丁玉美.数字信号处理(第二版) .西安电子科技大学出版社, 2001 [3] 吴大正. 信号与线性系统分析(第四版) . 高等教育出版社, 2005,8 [4] 谢嘉奎. 电子线路--线性部分(第四版). 高等教育出版社, 2003,2 [5] 陈后金. 信号分析与处理实验. 高等教育出版社, 2006, 8
七、 附录——设计原理
3
信号与系统课程设计
附录:设计原理
1.心电信号的读取
txt 格式的数据文件内容及格式如图 1- 1 所示(以 100.txt 为例):
图 1.1 txt 格式心电数据文件
其中文件的第一列为采样时间,第二列是在以 MLII 这种导联方式所得到的采样数据,
第三列式以 V5 这种导联方式所得到的采样数据,全文件记录了约为 10s 的心电数据, 3600 个采样数据,每一行数据之间用 Tab 符分隔。
由于数据文件中后两列数据是对同一种心电信号进行不同的导联方式所得到的采样数 据,所以可以采用任意其中的一种采样数据(比如选择 MLII),摒弃另外一种,即可完成对 此心电信号的分析。全部的心电文件记录时间约为 10s,共计 12 个左右周期的心电信号。
根据 txt 格式的数据文件的特点, 利用 labvIEW 提供的 I/O 文件函数, 在本课题中, 主 要是围绕 LabVIEW 中的 read from spreadsheet file 读表单文件函数来设计心电信号的读取部 分的 VI, 并利用 XY Graph 来对数据做图形化显示。 让心电数据文件中的第一列时间数据作
为 x 轴,对应的 MLII 方式的幅值作为 y 轴,以此得到绘制的原心电波形。
图 1.2 读表单文件函数 VI
4
信号与系统课程设计
图 1.3 读表单文件函数使用举例
实际设计心电信号数据文件时需要注意:
(1)数据文件的前两行为解释说明文字,不是真正的信号数据,读取信号程序要能够 自动忽略前两行文字,只读取真正的数字信号数据( 严禁自己手动删除原心电数据文件中 的前两行数据,必须通过程序来实现忽略前两行文字的目的 )。
(2)利用数组函数分别将文件的前两列分别读入一个一维数组。 labvIEW 默认的从文 本文件中读取的数据都是字符串,因此在使用心电信号数据前需要将其转换为数值才可以。 注意: 第一列时间数据均为 0:00.007 这种格式, 因此需要将字符串 0:00.007 先转化为字符 串 0.007 ,即去除字符串中冒号(: )以前的部分,然后再将其转为数值。
(3)最后利用已经转为数值的分别代表心电信号时间和幅值的两个一维数组,图形化
还原原始心电信号波形,在此推荐利用 labvIEW 中 XY Graph。
2.心电信号的线性插值处理
根据上文中提到的插值公式,以此为原理,设计 labvIEW 程序,对心电信号数据做线 性插值处理。插值完以后的数据应该是时间均匀的、以 0.001 秒为间隔的。
此步骤主要是基于 labvIEW 中的数组操作函数来实现,建议一定 首先熟悉并掌握 labvIEW 中的所有数组操作函数的作用和操作方法(比如 array size 函数、 index array 函 数、 insert into array 函数等)。
其中一种插值方法的思路是: 第一步中读取的心电信号数据的时间数据和幅值数据分别 存放在一个一维数组中。 然后利用 for 循环结构把所有数据依次读取进来。 判断时间数据数 组中前后两个相邻的数据间隔是否为 0.001s,如果是则判断下一对相邻两个数据;如果间 隔大于 0.001s 则在一个 CASE 结构里面做插值处理。
注意对时间数据做插值的同时一定不要忘记对幅值数据同样做插值处理, 时间数据和幅 值数据一定是相互对应的。
3.设计相应的数字滤波器
原心电信号里面是包含有噪声的,因此需要对数字心电信号做一定滤波处理。
LabVIEW 提供的 IIR 滤波器类型有 Butterworth、Chebyshev、Inverse Chebyshev、Elliptic
和 Bessel 滤波器。它们都有各自的特点,用途也不尽相同。
5
信号与系统课程设计
LabVIEW 还提供了高级 IIR 和 FIR 滤波器子面板。在高级面板中,滤波器的设计部分 和执行部分是分开的。 由于滤波器的设计很费时间, 而滤波过程则很快。 在含有循环结构的 程序中, 可以将滤波器的设计放在循环外, 将设计好的滤波器参数传递到循环内, 在循环内 进行滤波,从而提高程序的运行效率。
Labview 提供的滤波器函数面板面板位于 Functions Palette 的 Signal Processing| Filters 面
板下,如图 3.1 所示。
图 3.1 滤波器函数面板
选择合适的滤波器为心电信号设计一个低通和高通滤波器,或者带通滤波器。
4. 频谱分析
应该对线性插值后的心电信号和滤波处理后的心电信号做傅里叶变换, 画出其频谱, 比 对前后差异,分析滤波器性能。
labvIEW 中频域分析函数被划分为两个面板: Transforms 面板实现的函数功能主要有 傅立叶变换、 Hilbert 变换、小波变换、拉普拉斯变换等; Spectral Analysis 面板包含的函数 主要包括功率谱分析、联合时频分析等。
6
信号与系统课程设计
图 4.1 transforms 面板
图 4.2 spectral analysis 面板
5.低通滤波器和 FFT 举例
信号源由一个正弦信号与一个经过高通滤波的高频信号叠加而成。高通滤波器的截止频 率为 100Hz,即滤掉频率小于 100 Hz 的低频噪声分量。信号滤波器为 Butterworth 滤波器, 截止频率设为 30Hz,即滤掉频率大于 30Hz 的噪声分量。从图中可以清楚地看到滤波后的 信号基本还原了正弦信号。
7
信号与系统课程设计
图 4.3 低通滤波 VI 程序面板
图 4.4 低通滤波 VI 前面板
8
展开阅读全文