心电信号频谱分析-fft分析

上传人:第*** 文档编号:78870941 上传时间:2019-02-15 格式:DOC 页数:15 大小:207.01KB
返回 下载 相关 举报
心电信号频谱分析-fft分析_第1页
第1页 / 共15页
心电信号频谱分析-fft分析_第2页
第2页 / 共15页
心电信号频谱分析-fft分析_第3页
第3页 / 共15页
心电信号频谱分析-fft分析_第4页
第4页 / 共15页
心电信号频谱分析-fft分析_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《心电信号频谱分析-fft分析》由会员分享,可在线阅读,更多相关《心电信号频谱分析-fft分析(15页珍藏版)》请在金锄头文库上搜索。

1、课程设计任务书(指导教师填写)课程设计名称 微机应用技术课程设计 学生姓名 专业班级 设计题目 心电信号的频谱分析- FFT分析 一、 课程设计目的1了解心电信号的特点;2熟悉MATLAB程序设计方法;3理解频谱分析的作用和相关概念;二、 设计内容、技术条件和要求1采样点数N=1000,采样频率f=360HZ 和 100HZ;2利用Matlab软件对心电信号进行时域分析(包括均值,方差,标准差,峰峰值,极大值和极小值)和频域分析(FFT),其中涉及的参数根据需要自主选择;三、 时间进度安排第1周:查阅资料;第2周:实现设计内容第3周:整理资料,撰写课程设计任务书四、 主要参考文献参考模拟电子技

2、术、Matlab信号处理与应用和医学仪器教材指导教师签字: 年 月 日目录摘要1引言2一、 心电信号的特点3二、 MATLAB软件介绍4三、 心电信号的分析方法63.1时域分析63.2频域分析63.3 FFT分析7 四、心电信号的Matlab实现9 4.1 Matlab编程实现94.2 Matlab时域分析结果104.3 Matlab频域分析结果11心得体会12参考文献13摘要 本次课程设计介绍了一种运用信号系统知识和MATLAB相结合的思想,设计出用傅里叶变换分析MIT-BIH心电数据库的心电信号的方法。运用该方法既能简便的对心电信号进行分析,又能把所学知识应用于解决实际问题。该方法简单易懂

3、,能加深初学者对傅里叶变换的理解,并且可以得到许多有用的信息,对于诊断疾病有非常重要的参考价值。关键字: 心电信号 Matlab 傅里叶变换引言 美国麻省理工学院提供的MIT-BIH数据库是一个权威性的国际心电图检测标准库,近年来应用广泛,为我国的医 学程界所重视。 MIT-BIH数据库共有48个病例,每个病例数据时长30min,共116000多个心拍,包含有正常心拍和异常心拍,内容丰富完整,为了读取方便,采用txt格式的数据文件作为我们的原心电信号数据。利用Matlab提供的textread函数,读取txt数据文件中的信号,并还原为实际波形。 本设计课题主要研究数字心电信号的初步分析及mat

4、lab应用。通过完成本课题的设计,主要达到以下几个目的: (1)了解MATLAB软件的特点和使用方法,熟悉基于了解人 体心电信号的时域特征和频谱特征; (2)进一步了解数字信号的分析方法; (3)通过本课题的设计,培养学生运用所学知识分析和解决 实际问题的能力。 1、 心电信号的特点 心电信号属生物医学信号,具有如下特点: (1) 信号具有近场检测的特点,离开人体表微小的距离,就基本上检测 不到信号; (2) 心电信号通常比较微弱,至多为mV量级; (3) 属低频信号,且能量主要在几百赫兹以下; (4) 干扰特别强。干扰既来自生物体内,如肌电干扰、呼吸干扰等;也 来自生物体外,如工频干扰、信号

5、拾取时因不良接地等引入的其他外来串扰等; (5) 干扰信号与心电信号本身频带重叠(如工频干扰等)。 二、 MATLAB软件介绍MATLAB是矩阵实验室的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是由美国MathWorks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的

6、众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单元是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解决问题要比用C,FORTRAN等语言完

7、成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点。在新的版本中也加入了对C,FORTRAN,C+,JAVA的支持。可以直接调用,用户也可以将自己编写的使用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。3、 心电信号分析方法按照信号与系统问题可以分为两大类基本分析方法:时域分析方法和频域分析方法。两种方法各有不同,互相补充。3.1 时域分析 时域分析方法是对连续信号进行采样、量化和编码形成离散的二进制数字序列,再采用数字信号处理技术进行处理。信号的采样过程如果满足一定条件,那么得到的这种离散

8、的二进制序列在形状特征以及内在属性上完全可替代原连续信号,只是这样方便人们分析处理信号并提取有用信息。 对心电信号进行的时域处理通常包括信号的均值,方差,标准差,峰峰值,极大值和极小值六种。3.2 频域分析离散系统的频域分析就是研究离散信号通过离散系统以后在频谱结构上所产生的变化,为此首先必须了解描述离散系统频率特性的有关特征量。信号的有些信息在用空域分析是得不到的,而如果用频域分析方法的话,可以得到其中许多有价值的信息。 3.3 FFT分析有限长序列可以通过离散傅里叶变换(DFT)将其频域也离散化成有限长序列,但其计算量太大,很难实时地处理问题,因此引出了快速傅里叶变换(FFT)。快速傅氏变

9、换(FFT)是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。根据对序列分解与选取方法的不同而产生了FFT的多种算法,基本算法是基DIT和基DIF。设x(n)为N项的复数序列,由DFT变换,任一X(m)的计算都需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),那么求出N项复数序列的X(m

10、),即N点DFT变换大约就需要次运算。当N=1024点甚至更多的时候,需要N2=1048576次运算,在FFT中,利用WN的周期性和对称性,把一个N项序列(设N=2k,k为正整数),分为两个N/2项的子序列,每个N/2点DFT变换需要次运算,再用N次运算把两个N/2点的DFT变换组合成一个N点的DFT变换。这样变换以后,总的运算次数就变成。继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组的DFT运算单元,那么N点的DFT变换就只需要次的运算,N在1024点时,运算量仅有10240次,是

11、先前的直接算法的1%,点数越多,运算量的节约就越大,这就是FFT的优越性。FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。这就是很多信号分析采用FFT变换的原因。另外,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。一个模拟信号,经过ADC采样之后,就变成了数字信号。采样得到的数字信号,就可以做FFT变换了。N个采样点,经过FFT之后,就可以得到N个点的FFT结果。为了方便进行FFT运算,通常N取2的整数次方。假设采样频率为Fs,信号频率F,采样点数为N。那么FFT之后结果就是一个为

12、N点的复数。每一个点就对应着一个频率点。这个点的模值,就是该频率值下的幅度特性。假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍。而第一个点就是直流分量,它的模值就是直流分量的N倍。而每个点的相位就是在该频率下的信号的相位。如果要要提高频率分辨率,就需要增加采样点数,也即采样时间。频率分辨率和采样时间是倒数关系。四、心电信号的 Matlab实现4.1 Matlab编程实现clear;close all;%时域分析 z=textread(e:ECG.txt);ECG1=z(:,2); %取第二列作为分析数据A=ECG1(1:1000); fpri

13、ntf(n数据基本信息:n)fprintf(最小值=%7.3fn,min(A) fprintf(平均值=%7.3fn,mean(A)fprintf(最大值=%7.3fn,max(A) fprintf(标准方差=%7.3fn,std(A)fprintf(峰峰值=%7.3fn,max(A)-min(A) fprintf(方差=%7.3fn,exp(std(A)figure;plot(z(1:1000),A);xlabel(时间(s));ylabel(幅值);title(原始信号(时域));grid on; %画出分格线 %频域分析ECG1=z(:,2);x=ECG1(1:1000);y=fft(x,1000); %做1000点傅里叶变换mag=abs(y);f=2*pi/1000:2*pi/1000:2*pi; %长度为1000的采样点列向量figure;plot(f,mag);%做频谱图axis(0,7,0,100); %设定坐标范围xlabel(频率(100Hz);ylabel(幅值);title(心电幅频谱图 N=1000);grid on;4.2 Matlab时域分析结果数据基本信息: 最小值= -0.935 平均值= -0.054 最大值= 2.945 标准方差= 0.580

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号