燕山大学课程设计说明书题目:心电信号的频谱分析学院(系):电气工程学院年级专业:09医疗仪器学号:学生姓名:指导教师:孟辉赵勇教师职称:讲师讲师燕山大学课程设计(论文)任务书院(系):电气工程学院基层教学单位:生物医学工程系学号学生姓名专业(班级)09医疗仪器设计题目心电信号的频谱分析设计技术参数采样点数N=400采样频率f=100HZ设计要求利用Matlab软件对心电信号进行时域分析(包括均值,方差,标准差,峰峰值,极大值和极小值)和频域分析(包括自相关函数,FFT,功率谱),其中涉及的参数根据需要自主选择工作量分析题目,查阅相关资料,熟悉MATLAB程序设计方法编写程序代码、调试、运行根据设计结果写出报告工作计划第一天查资料,确认题目第二天任务书审定,熟悉MATLAB工作环境第三天编写程序并进行程序调试第四天完成基本设计要求第五天完成设计要求及任务说明书参考资料1、信号处理原理及应用机械工业出版社谢平20082、Matlab信号处理与应用国防工业出版社董长虹20053、刘波文忠曾涯《matlab信号处理》电子工业出版社2005指导教师签字孟辉赵勇基层教学单位主任签字徐永红说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份2012年12月10日目录摘要·······················4引言·······················4一、MATLAB软件介绍···············5二、心电信号分析方法···············62.1时域分析·······················72.2频域分析·······················72.3自相关函数分析····················72.4FFT分析·······················52.5功率谱分析······················9三、心电信号分析················113.1Matlab编程实现··················113.2Matlab时域分析结果················113.3Matlab频域分析结果················13心得体会·····················15参考文献·····················16摘要信号处理的基本概念和分析方法已应用于许多不同领域和学科中,尤其是数字计算机的出现和大规模集成技术的高度发展,有力地推动了数字信号处理技术的发展和应用。心电信号是人类最早研究并应用于医学临床的生物电信号之一,它比其他生物电信号便易于检测,并具有较直观的规律性,对某些疾病尤其是心血管疾病的诊断具有重要意义。它属于随机信号的一种,用数字信号处理的方法和Matlab软件对其进行分析后,可以得到许多有用的信息,对于诊断疾病有非常重要的参考价值。关键字:信号处理心电信号Matlab2引言MATLAB是矩阵实验室的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。心电信号是人类最早研究并应用于医学临床的生物电信号之一,它比其他生物电信号便易于检测,并具有较直观的规律性,对某些疾病尤其是心血管疾病的诊断具有重要意义。按照信号与系统问题可以分为两大类基本分析方法:时域分析方法和频域分析方法。两种方法各有不同,互相补充。3一、MATLAB软件介绍MATLAB是矩阵实验室的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是由美国MathWorks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单元是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解决问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的使用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。4二、心电信号分析方法按照信号与系统问题可以分为两大类基本分析方法:时域分析方法和频域分析方法。两种方法各有不同,互相补充。2.1时域分析时域分析方法是对连续信号进行采样、量化和编码形成离散的二进制数字序列,再采用数字信号处理技术进行处理。信号的采样过程如果满足一定条件,那么得到的这种离散的二进制序列在形状特征以及内在属性上完全可替代原连续信号,只是这样方便人们分析处理信号并提取有用信息。对心电信号进行的时域处理通常包括信号的均值,方差,标准差,峰峰值,极大值和极小值六种。2.2频域分析离散系统的频域分析就是研究离散信号通过离散系统以后在频谱结构上所产生的变化,为此首先必须了解描述离散系统频率特性的有关特征量。信号的有些信息在用空域分析是得不到的,而如果用频域分析方法的话,可以得到其中许多有价值的信息。2.3自相关函数分析自相关函数是用来表征一个随机过程本身,在任意两个不同时刻t1,t2的状态之间的相关程度,是内在联系的一种度量。自相关函数是描述随机信号x(t)在任意两个不同时刻t1,t2的取值之间的相关程度。可以用来确定输出多大程度上取决于输入,对于修正测量中接入噪声源产生的误差非常有效。且还能用来检测隐藏的周期信号。设原函数是f(t),则自相关函数定义为)(jR10)()(1NnnjnfnfN。52.4FFT分析有限长序列可以通过离散傅里叶变换(DFT)将其频域也离散化成有限长序列,但其计算量太大,很难实时地处理问题,因此引出了快速傅里叶变换(FFT)。快速傅氏变换(FFT)是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。根据对序列分解与选取方法的不同而产生了FFT的多种算法,基本算法是基2DIT和基2DIF。设x(n)为N项的复数序列,由DFT变换,任一X(m)的计算都需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),那么求出N项复数序列的X(m),即N点DFT变换大约就需要2N次运算。当N=1024点甚至更多的时候,需要N2=1048576次运算,在FFT中,利用WN的周期性和对称性,把一个N项序列(设N=2k,k为正整数),分为两个N/2项的子序列,每个N/2点DFT变换需要22N次运算,再用N次运算把两个N/2点的DFT变换组合成一个N点的DFT变换。这样变换以后,总的运算次数就变成22222NNNN。继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组的DFT运算单元,那么N点的DFT变换就只需要NN2log次的运算,N在1024点时,运算量仅有10240次,是先前的直接算法的1%,点数越多,运算量的节约就越大,这就是FFT的优越性。6FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。这就是很多信号分析采用FFT变换的原因。另外,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。一个模拟信号,经过ADC采样之后,就变成了数字信号。采样得到的数字信号,就可以做FFT变换了。N个采样点,经过FFT之后,就可以得到N个点的FFT结果。为了方便进行FFT运算,通常N取2的整数次方。假设采样频率为Fs,信号频率F,采样点数为N。那么FFT之后结果就是一个为N点的复数。每一个点就对应着一个频率点。这个点的模值,就是该频率值下的幅度特性。假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍。而第一个点就是直流分量,它的模值就是直流分量的N倍。而每个点的相位就是在该频率下的信号的相位。如果要要提高频率分辨率,就需要增加采样点数,也即采样时间。频率分辨率和采样时间是倒数关系。2.5功率谱分析定义信号f(t)的能量(作归一化处理):由电压f(t)(或者电流f(t))在1电阻上消耗的能量dttfE)(2其中22uRuiuE,若积分值存在,信号的能量为有限值,则称f(t)为能量信号。对于能量无限大的信号(如周期信号),我们考虑能量的时间平均值,这显然就是信号的平均功率。这种信号称为(平均)功率信号。定义信号f(t)的平均功率:电压f(t)在1电阻上消耗的平均功率(简称功率)222)(1limTTTdttfTS7式中,T是为求平均的时间区间。为了更好得描述能量信号、功率信号,我们引入能量谱密度和功率谱密度概念。能量谱密度、功率谱密度函数表示信号的能量、功率密度随频率变化的情况。通过研究功率谱密度,可以帮助了解信号的功率分布情况,确定信号的频带等对于随机信号而言其持续时间无限长,因此对于非0的样本函数,它的能量一般也是无限的,因此其付氏变换不存在。但是注意到它的平均功率是有限的,在特定的条件下,仍然可以利用博里叶变换这一工具。为了将傅里叶变换方法应用于随机过程,必须对过程的样本函数做某些限制,最简单的一种方法是应用截取函数。设过程t的截取函数tT(截取的随机过程)为:其他02TtttT则截取函数的傅里叶变换为:22)()()(TTtjTtjTTdetdtet平稳随机过程)(T的平均功率为dPdttTESTTT)(21)(1222limt的功率谱密度为PTEPTT])([)(2lim这样的平均功率等于各个频率分量(统计值)单独贡献出的功率之连续和,是在频率域上描述随机过程统计特性的最主要数字特征。随机信号的平均功率8也可以通过计算均方值的时间平均(时间均方值)来求得。功率密度谱虽然描述了随机信号的功率在各个不同频率上的分布,但因为它仅与幅度频谱有关,没有相位信息,所以从已知功率谱还难以完整地恢复原来的功率信号。三、心电信号分析3.1Matlab编程实现clear;closeall;clearall;clc;z=textread('ECG.txt');ECG=z(:,1);input=ECG(1:400);rate=ECG(400);sig=in