基于MATLAB的心电信号分析系统的设计与仿真

时间:2024.4.20

课题二 基于MATLAB的心电信号分析系统的设计与仿真

摘要:本文是利用MATLAB软件对美国麻省理工学院提供的MIT-BIH数据库的122号心电信号病例进行分析,利用MATLAB软件及simulink平台对122号心电信号的病例进行读取、插值、高通滤波、低通滤波等的处理。将心电信号中的高频和低频的杂波进行滤除后对插值前后滤波前后的时域波形及频谱进行分析。同时也将滤波器的系统函数进行读取,分析,画出滤波的信号流程图,也分析各个系统及级联后的系统的冲击响应、幅频响应、相位响应和零极点图来判断系统的稳定性,并用MATLAB软件将图形画出,以便于以后的对系统进行分析。

关键词:MATLAB,simulink,心电信号,滤波器

1.课程设计的目的、意义:

    本设计课题主要研究数字心电信号的初步分析及滤波器的应用。通过完成本课题的设计,拟主要达到以下几个目的:

(1)了解MATLAB软件的特点和使用方法,熟悉基于Simulink的动态建模和仿真的步骤和过程;

(2)了解人体心电信号的时域特征和频谱特征;

(3)进一步了解数字信号的分析方法;

(4)通过应用具体的滤波器进一步加深对滤波器理解;

(5)通过本课题的设计,培养学生运用所学知识分析和解决实际问题的能力。

2 设计任务及技术指标:

设计一个简单的心电信号分析系统。对输入的原始心电信号,进行一定的数字信号处理,进行频谱分析。采用Matlab语言设计,要求分别采用两种方式进行仿真,即直接采用Matlab语言编程的静态仿真方式、采用Simulink进行动态建模和仿真的方式。根据具体设计要求完成系统的程序编写、调试及功能测试。

2.1必做部分:

2.1.1读取原始心电信号

美国麻省理工学院提供的MIT-BIH数据库是一个权威性的国际心电图检测标准库,近年来应用广泛,为我国的医学工程界所重视。MIT-BIH数据库共有48个病例,每个病例数据长30min,总计约有116000多个心拍,包含有正常心拍和各种异常心拍,内容丰富完整。

为了读取简单方便,采用其txt格式的数据文件作为我们的原心电信号数据。利用Matlab提供的文件textread或textscan函数,读取txt数据文件中的信号,并且还原实际波形。

2.1.2对原始心电信号做线性插值

由于原始心电信号数据不是通过等间隔采样得到的,也就是说原始的心电数据并不是均匀的,而用Matlab中提供的数字滤波器处理数据时,要求数据是等间隔的。因此设计的系统首先应对原始心电信号做线性插值处理,使其变为等间隔的数字信号,否则直接处理后会出现偏差,根据心电信号的特点, 把时间分隔成0.001s。添加的幅值点采用一次线性插值。对二维数据进行插值,相连幅值间数据的插值根据时间进行,运算公式如下:

其中是第i个数据时间点,Ai是与之对应的数据,N是两数据之间需要的插值数,是需要插值的两点数据差,

时数组依次排列,即得到了插值后等间隔的新数据。

2.1.3根据心电信号的频域特征,设计相应的低通和带通滤波器

一般正常人的心电信号频率在0.7~100HZ范围内,幅度为(胎儿)~5mV(成人)。人体心电信号微弱,信噪比小,因此,在采集心电信号时,易受到仪器、人体活动等因素的影响,而且所采集的心电信号常伴有干扰。采集心电数据时,由于人的说话呼吸,常常会混有约为0.1Hz到0.25Hz频段的干扰,对于这些低频干扰,可以让信号通过一个高频滤波器,低截止频率设置为0.25,来滤除低频信号,对于高频信号干扰,可以让信号再通过一个低频滤波器,其中截止频率设置为99Hz。也可以直接应用带通滤波器设计。

(1)根据以上指标,设计模拟巴特沃斯(切比雪夫)低通、高通或带通滤波器,画出幅频特性(模拟滤波器幅频特性freqs)。

(2)根据心电信号频谱范围设计一个3阶以上模拟滤波器对心电信号进行预滤波;

(3)采用直接、级联或并联方式,实现该系统,并画出系统的信号流图;

(4)分析系统的时域特性(阶跃响应、冲击响应等),并用Matlab绘出相关波形;

(5)用Matlab分析幅频特性,并绘出相关波形;

(6)分析系统函数零极点与幅频特性的关系。

2.1.4对处理前后的心电信号分别做频谱分析

利用Matlab软件对处理前后的心电信号编程显示其频谱,分析比较滤波前后的频谱,得出结论。

如果分析频谱,滤波效果不明显,则需变动滤波器参数指标,重新设计滤波器。通过频谱分析,多次试验确定最合适的滤波器。

2.1.5  Simulink仿真

根据前面的设计,进行基于Simulink的动态仿真设计。实现心电信号的分析和处理。给出系统的基于Simulink的动态建模和仿真的系统方框图,同时记录系统的各个输出点的波形和频谱图。

2.2选作部分:

2.2.1减少分析数据的工作量试验

只截取大约2.5s,三个周期左右,大约800个采样数据进行分析;

2.2.2 50Hz工频陷波器设计

由于电子设备采集到的信号经常会混有电源线干扰。电源线干扰是以50 Hz为中心的窄带噪声,带宽小于1Hz。设计相应的带阻滤波器滤除电源线干扰,并对处理后的信号做频谱分析。

3 设计方案论证:

4 设计内容(程序清单附带图片):

4.1MATLAB程序清单及图片:

4.1.1 提取txt格式心电信号:

fid=fopen('122.txt');

C=textscan(fid,'%8c %f %*f','headerlines',2);

fclose(fid);

a=C{1};

y=C{2};

 k=length(a)

for i=1:k

   c(i)=strread(a(i,:),'%*s %f','delimiter',':');

end

x=c';

plot(x,y)

duquxinhao

4.1.2 对原始心电信号进行线性插值

t=0:0.001:2.5;

F=interp1(x,y,t);

F=F';

t=t';

plot(t,F)

4.1.3 把数据读到txt中

fid = fopen('t.txt','wt');

fprintf(fid,'%g\n',t);      

fclose(fid);

fid = fopen('F.txt','wt');

fprintf(fid,'%g\n',F);      

fclose(fid);

4.1.4插值前后波形比较

subplot(2,2,1)

plot(x,y)

title('初始信号时域波形')

axis([0 2.5 -2 1])

subplot(2,2,2)

fs=1000;

N=length(y)

n=1:N;

f1=n*fs/N;

Y1=fft(y);

plot(f1,abs(Y1))

title('初始信号频谱')

axis([0 1000 0 200])

subplot(2,2,3)

plot(t,F)

title('差值后信号时域波形')

axis([0 2.5 -2 1])

M=length(F);

m=1:M;duibi

f2=m*fs/M;

Y2=fft(F);

subplot(2,2,4)

plot(f2,abs(Y2))

title('插值后信号频谱')

axis([0 1000 0 200])

4.1.5模拟低通滤波器

wp=60*2*pi;ws=99*2*pi;Rp=1;As=40;

[N,wc]=buttord(wp,ws,Rp,As,'s')

[B,A]=butter(N,wc,'s')

k=0:511;fk=0:1000/512:1000;wk=2*pi*fk;

Hk=freqs(B,A,wk);

plot(fk,20*log10(abs(Hk)));

grid on

N =

    11

wc =

  409.2596

B =

  1.0e+028 *

  Columns 1 through 10

         0         0         0         0         0         0         0         0         0         0 0    5.3949

  Columns 11 through 12

       

A =

  1.0e+028 *

  Columns 1 through 10

    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0008

  Columns 11 through 12

    0.0926    5.3949

ditong

4.1.6模拟高通滤波器:

wp=0.7*2*pi;ws=0.25*2*pi;Rp=0.1;As=40;

[N,wc]=buttord(wp,ws,Rp,As,'s')

[B0,A0]=butter(N,wc,'s');

wph=2*pi*0.25;hk=freqs(B0,A0,wph);

[BH,AH]=lp2hp(B,A,wph);

[h,w]=freqs(BH,AH);

plot(w,20*log10(abs(h)));

axis([0,1,-80,5]);

N =

     7

wc =

    3.0327

B0 =

  1.0e+003 *

         0         0         0         0         0         0         0    2.3595

A0 =

  1.0e+003 *

    0.0010    0.0136    0.0929    0.4070    1.2343    2.5905    3.4964    2.3595

gaotong

4.1.7滤波前后图形对比:

t=0:0.001:9.997;

F=interp1(x,y,t);

F=F';

t=t';

figure(1)

subplot(3,1,1);

plot(1000*t,F);

wp=0.7*2*pi;ws=0.25*2*pi;Rp=0.1;As=40;T=1;

[N,wc]=buttord(wp,ws,Rp,As,'s')

[B,A]=butter(N,wc,'s');

[b,a]=imp_invr(B,A,T)

[db,mag,pha,w]=freqz_m(b,a);

y1=filter(b,a,F);

subplot(3,1,2);plot(y1);

title('高通滤波后')

wp1=2*pi*60;ws1=2*pi*99;Rp1=0.1;As1=40;T1=1000;

OmegaP1=wp1/T1;OmegaS1=ws1/T1;

[cs1,ds1]=afd_butt(OmegaP1,OmegaS1,Rp1,As1);

[b1,a1]=imp_invr(cs1,ds1,T)

[db1,mag1,pha1,w1]=freqz_m(b1,a1);

y2=filter(b1,a1,y1);

subplot(3,1,3);plot(y2);

title('低通滤波后')

M=length(F);

m=1:M;

fs=1000;

f2=m*fs/M;

F1=fft(F);

Y1=fft(y1);

Y2=fft(y2)

figure(2)

subplot(3,1,1)

plot(f2,abs(F1))

axis([0,1000,0,200])

title('原始信号频谱_{9.997}')

subplot(3,1,2)

plot(f2,abs(Y1))

axis([0,1000,0,200])

title('高通滤波后信号频谱_{9.997}')

subplot(3,1,3)

plot(f2,abs(Y2))

axis([0,1000,0,200])

title('低通滤波后信号频谱_{9.997}')

4.1.8系统函数的级联、冲击响应、幅度响应、相位响应

figure(3)

H1=impz(b,a);

H2=impz(b1,a1);

Hn=conv(H1,H2);%将系统一的系统函数与系统二的函数相级联

subplot(3,1,1);

plot(H1);title('高通系统函数冲击响应曲线');       %系统函数的冲击响应曲线

subplot(3,1,2);

plot(H2);title('低通系统函数冲击响应曲线');   

subplot(3,1,3);

plot(Hn);title('级联后系统函数冲击响应曲线');   

figure(4)

fs=1000;                          

[H,f]=freqz(cs,ds,256,fs);          %系统一的幅频特性曲线

mag=abs(H);     %幅度响应

ph=angle(H);    %相位响应

ph=ph*180/pi;

subplot(2,2,1),plot(f,mag);grid   %h1的幅度响应

title('h1幅度响应')

%xlabel('frequency(Hz)');ylabel('magnitude');

subplot(2,2,2);plot(f,ph);grid    %h1的相位响应

title('h1相位响应 ')

fs=1000;                          

[H,f]=freqz(BH,AH,256,fs);         

mag=abs(H);    

ph=angle(H);   

ph=ph*180/pi;

subplot(2,2,3),plot(f,mag);grid  

title('h2幅度响应')

subplot(2,2,4);plot(f,ph);grid   

title('h2相位响应')

figure(6)

zr=roots(B)           %系统一的零点图

pk=roots(A)           %系统一的极点图

zplane(B,A);         %zplane函数画出系统一的零极点图

figure(7)

zr1=roots(cs1)           %系统二的零点图

pk1=roots(ds1)           %系统二的极点图

zplane(cs1,ds1);         %zplane函数画出系统一的零极点图

4.1.9截取到2.5s对截取的部分进行滤波及频谱分析

t1=0:0.001:2.5;

F0=interp1(x,y,t1);

F0=F0';

t1=t1';

figure(8)

subplot(3,1,1);

plot(1000*t1,F0);

wp=0.7*2*pi;ws=0.25*2*pi;Rp=0.1;As=40;T=1;

[N,wc]=buttord(wp,ws,Rp,As,'s')

[B,A]=butter(N,wc,'s');

[b,a]=imp_invr(B,A,T)

[db,mag,pha,w]=freqz_m(b,a);

y11=filter(b,a,F0);

subplot(3,1,2);plot(y11);

title('高通滤波后_{2.5}')

wp1=2*pi*60;ws1=2*pi*99;Rp1=0.1;As1=40;T1=1000;

OmegaP1=wp1/T1;OmegaS1=ws1/T1;

[cs1,ds1]=afd_butt(OmegaP1,OmegaS1,Rp1,As1);

[b1,a1]=imp_invr(cs1,ds1,T)

[db1,mag1,pha1,w1]=freqz_m(b1,a1);

y21=filter(b1,a1,y11);

subplot(3,1,3);plot(y21);

title('低通滤波后_{2.5}')

M=length(F0);

m=1:M;

fs=1000;

f2=m*fs/M;

F01=fft(F0);

Y11=fft(y11);

Y21=fft(y21)

figure(9)

subplot(3,1,1)

plot(f2,abs(F01))

axis([0,1000,0,200])

title('原始信号频谱_{2.5}')

subplot(3,1,2)

plot(f2,abs(Y11))

axis([0,1000,0,200])

title('高通滤波后信号频谱_{2.5}')

subplot(3,1,3)

plot(f2,abs(Y21))

axis([0,1000,0,200])

title('低通滤波后信号频谱_{2.5}')

shiyuduibi

pinpuduibi

chongji

xiangying

lingjidian1

0jidian2

2

2

4.2.Simulink仿真参数设置及波形对比:

4.2.1滤波器参数设置

4.2.2滤波前后的图形进行对比

 

 

 

5 实验结果与分析:

6 总结

7.实验收获及心得体会

参考文献:

[1] 北京迪阳正泰科技发展公司.综合通信实验系统——信号与系统指导书(第二版). 2006,6

[2] 丁玉美.数字信号处理(第三版).西安电子科技大学出版社,2001

[3] 吴大正. 信号与线性系统分析(第四版). 高等教育出版社,2005,8

[4] 谢嘉奎. 电子线路—非线性部分(第五版). 高等教育出版社,2003,2

[5] 陈后金. 信号分析与处理实验. 高等教育出版社,2006,8

更多相关推荐:
信息系统分析与设计课程设计

长春工业大学信息系统分析与设计课程设计综合报告班级090506班指导教师杜娟设计题目万佳公司材料供应管理系统小组成员及分工娜娜业务流程图数据流程图代码设计输出输入设计ER图范莹莹组织结构图功能结构图处理逻辑说明...

信息系统分析与设计课程设计报告

信息系统分析与设计课程设计报告题目人事管理系统专业信息管理与信息系统班级093221学号09322129姓名张楚玉指导老师黄国辉20xx年11月24日摘要随着信息技术的发展与提高在社会中的各个领域中信息技术起了...

信息系统分析及设计实验报告

书籍借阅管理系统的分析与设计一开发背景本系统是为了方便用户对图书的管理开发的要求系统界面友好使用简单提供对图书信息读者信息和图书流通情况的编辑查询统计报表等全面的数据管理功能同时使用户能方便的进行图书的出借返还...

《管理信息系统》课程设计报告

管理信息系统设计报告院系班级姓名学号辅导老师徐恒实验题目航班售票管理系统设计报告完成日期20xx年5月17日1目录一实验题目3二实验目的3三实验内容3系统分析3一必要性分析3二可行性分析3三航班售票管理系统业务...

信息系统分析与设计课程设计(1)

信息系统分析与设计课程设计一课程设计的目的与意义1通过本课程设计的实践及其前后的准备与总结复习领会巩固和运用信息系统分析与设计课堂上所学的系统开发方法和知识初步掌握系统分析系统设计系统实现系统维护的方法特别是结...

信息系统分析与设计小型超市销售管理系统课程设计报告

信息系统分析与设计课程设计报告题目小型超市销售管理系统专业信息管理与信息系统班级学号姓名某某指导老师郭树蕻20xx年11月24日目录摘要31系统分析411可行性分析4111经济可行性4112技术性可行性4113...

信息系统分析与设计课程设计

课程设计题目名称图书管理系统设计课程名称信息系统分析与设计学生姓名吕季干学号0840819xx5系专业理学与信息科学系信息与计算科学指导教师戴亚滨老师20xx年12月18日1邵阳学院课程设计论文任务书年级专业0...

UML课程设计报告 汽车租赁系统的需求分析与设计

课程设计报告20xx20xx学年第二学期教学单位信息工程与技术系课程名称UML统一建模语言课程设计课程设计题目汽车租赁系统的需求分析与设计指导教师XXXX学生姓名XXXXX专业名称计算机科学与技术数据库年级08...

管理信息系统课程设计报告(标准格式)

管理信息系统课程设计报告题目库存管理信息系统学生姓名指导教师成绩日期20xx年9月8号目录目录2摘要3库存管理管理信息系统4第一章现行系统概述4第二章系统分析41需求分析42可行性研究521目标与方案可行性52...

《管理信息系统》课程设计报告范文

1摘要企业工资管理系统是公司管理的一个重要内容是一种典型的管理系统企业工资管理系统是公司管理的一个重要内容是一种典型的管理系统其开发主要包括后台的数据库的建立维护以及前端的相应应用程序的开发两个方面的内容系统的...

管理信息系统课程设计报告

管理信息系统课程设计报告课程设计任务书一课程设计课题题目安徽工程大学地下超市收银系统开发二课程设计原始资料地下超市商品信息三课程设计内容开发适合于地下超市的高效率收银系统四课程设计要求1通过课程设计加深理解验证...

管理信息系统分析与设计实习报告

学籍管理系统管理信息系统分析与设计实习系统名称学籍管理系统姓名柳双琪学号20xx20xx0102专业信息管理与信息系统班级1124601学籍管理系统摘要当今社会中计算机的使用已经深入到日常工作和生活的方方面面W...

信息系统分析与设计课程设计报告(18篇)