基于某matlab的心电信号预处理

合集下载

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

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

课题二基于MATLABDE的心电信号分析系统的设计与仿真一、本课题的目的本设计课题主要研究数字心电信号的初步分析及滤波器的应用。

通过完成本课题的设计,拟主要达到以下几个目的:(1)了解MATLAB软件的特点和使用方法,熟悉基于Simulink的动态建模和仿真的步骤和过程;(2)了解人体心电信号的时域特征和频谱特征;(3)进一步了解数字信号的分析方法;(4)通过应用具体的滤波器进一步加深对滤波器理解;(5)通过本课题的设计,培养学生运用所学知识分析和解决实际问题的能力。

二、课题任务设计一个简单的心电信号分析系统。

对输入的原始心电信号,进行一定的数字信号处理,进行频谱分析。

采用Matlab语言设计,要求分别采用两种方式进行仿真,即直接采用Matlab 语言编程的静态仿真方式、采用Simulink进行动态建模和仿真的方式。

根据具体设计要求完成系统的程序编写、调试及功能测试。

(1)对原始数字心电信号进行读取,由数字信号数据绘制出其时域波形。

(2)对数字信号数据做一次线性插值,使其成为均匀数字信号,以便后面的信号分析。

(3)根据心电信号的频域特征(自己查阅相关资料),设计相应的低通和高通滤波器。

(4)编程绘制实现信号处理前后的频谱,做频谱分析,得出相关结论。

(5)对系统进行综合测试,整理数据,撰写设计报告。

三、主要设备和软件(1)PC机一台。

(2) MATLAB6.5以上版本软件,一套。

四、设计内容、步骤和要求4.1必做部分4.1.1利用Matlab对MIT-BIH数据库提供的数字心电信号进行读取,并还原实际波形美国麻省理工学院提供的MIT-BIH数据库是一个权威性的国际心电图检测标准库,近年来应用广泛,为我国的医学工程界所重视。

MIT-BIH数据库共有48个病例,每个病例数据长30min,总计约有116000多个心拍,包含有正常心拍和各种异常心拍,内容丰富完整。

为了读取简单方便,采用其txt 格式的数据文件作为我们的原心电信号数据。

基于matlab的心电信号预处理

基于matlab的心电信号预处理

基于matlab的心电信号预处理一、心电信号(1)心电信号的特性人体心电信号是非常微弱的生理低频电信号,通常最大的幅值不超过5mV,信号频率在0.05~100Hz之间。

心电信号是通过安装在人体皮肤表面的电极来拾取的。

由于电极和皮肤组织之间会发生极化现象,会对心电信号产生严重的干扰。

加之人体是一个复杂的生命系统,存在各种各样的其他生理电信号对心电信号产生干扰。

同时由于我们处在一个电磁包围的环境中,人体就像一根会移动的天线,从而会对心电信号产生50Hz左右的干扰信号。

心电信号具有微弱、低频、高阻抗等特性,极容易受到干扰,所以分析干扰的来源,针对不同干扰采取相应的滤除措施,是数据采集重点考虑的一个问题。

常见干扰有如下几种:①工频干扰②基线漂移③肌电干扰心电信号具有以下几个特点:·信号极其微弱,一般只有0.05~4mV,典型值为1mV;·频率范围较低,频率范围为0.1~35Hz,主要集中在5~20Hz;·存在不稳定性。

人体内部各器官问的相互影响以及各人的心脏位置、呼吸、年龄、是否经常锻炼等因素,都会使心电信号发生相应变化;·干扰噪声很强。

对心电信号进行测量时,必然要与外界联系,但由于其自身的信号非常微弱,因此,各种干扰噪声非常容易影响测量。

其噪声可能来自工频(50Hz)干扰、电极接触噪点、运动伪迹、肌电噪声、呼吸引起的基线漂移和心电幅度变化以及其他电子设备的机器噪声等诸多方面。

(2)心电信号的选择本次实验所采用的心电信号来自MIT-BIH库,库中有48组失常的心电信号,要在其中找出符合实验要求的心电信号(即含有肌电干扰、工频干扰和基线漂移)。

(3)正常心电信号波形图1是正常心电信号在一个周期内的波形,由P波、QRS波群和T波组成。

P波是由心房的去极化产生的,其波形比较小,形状有些圆,幅度约为0.25mV,持续时间为0.08~0.11s。

窦房结去极化发生在心房肌细胞去极化之前,因而在时间上要先于P波,只是窦房结处于心脏内部,其电活动在体表难以采集。

基于Matlab心电信号实时处理的研究.kdh.

基于Matlab心电信号实时处理的研究.kdh.

第 09卷第 3期中国水运 Vol.9 No.3 2009年 3月 China Water Transport March 2009收稿日期:2009-02-25作者简介:余永纪(1984-,男,杭州电子科技大学电子信息学院在读研究生,研究方向为电子信息系统集成。

基金项目:浙江省科技厅计划项目(2005C33006基于 Matlab 心电信号实时处理的研究余永纪,张亚君,洪明(杭州电子科技大学电子信息学院,浙江杭州 310018摘要:该文基于 Matlab 强大功能的考虑, 利用 Matlab 软件作为技术平台, 实现了 PC 机与单片机实时串行通信和心电数据的实时处理,完成心电数据的采集与传输、数据存储、数字滤波、QRS 波检测及结果图形显示等功能。

利用这个方法可以避开复杂的算法,简单编程就可以实现心电数据的实时处理和分析,提高了开发效率,对心电检测技术的研究有一定的实用性。

关键词:Matlab;心电信号;回调函数;实时中图分类号:TP274 文献标识码:A 文章编号:1006-7973(200903-0105-03引言一个心电监测系统在采集到心电信号之后都要进行较为复杂的数据处理和分析,如数字滤波、QRS 波检测、心律失常分析等。

Matlab 是美国 Mathworks 公司开发的面向理论分析研究、工程计算数据处理和绘图的一套具有强大功能的软件系统。

运用 Matlab 软件进行这些方面的应用可以起到事半功倍的效果。

该文介绍利用 MATLAB 软件作为技术平台, 在心电数据采集之后实现 PC 机与单片机实时串行通信, 并进行滤波处理、数据存储、QRS 波检测和波形显示的方法。

该方法充分发挥了 Matlab 的优势, 实现了心电数据的实时处理和分析, 简单实用。

一、系统原理图 1 系统原理图系统原理如图 1所示。

系统以 MSP430F449为下位机, 主要完成心电信号的采集功能。

这一部分主要包括心电采集电路、信号放大电路、滤波电路等。

基于Matlab的心电信号分析与处理小论文.doc

基于Matlab的心电信号分析与处理小论文.doc

基于Mat lab的心电信号分析与处理摘要:本课题设计了一个简单的心电信号分析系统。

直接采用Mat lab语言编程对输入的原始心电信号进行处理,并通过matlab语言编程设计对其进行时域和频域的波形频谱分析,根据具体设计要求完成系统的程序编写、调试及功能测试,得出一定的结论。

(This topic has designed a simple ECG analysis system. Direct use of Matlab programming language original ECG signal input is processed, and its waveform spectrum analysis of the time domain and frequency domain matlab language programming through design, prepared in accordance with specific design requirements to complete the system of procedures, debugging and functional testing,too a certain conclusion.)关键字:matlab、心电信号、滤波一、课题目的及意义心电信号是人类最早研究并应用于医学临床的生物信号之一,它比其它生物电信号更易于检测,并且具有较直观的规律性,因而心电图分析技术促进了医学的发展。

然而,心电图自动诊断还未广泛应用于临床,从国内外的心电图机检测分析来看,自动分析精度还达不到可以替代医生的水平,仅可以为临床医生提供辅助信息。

其主要原因是心电波形的识别不准,并iL心电图诊断标准不统-。

因此,探索新的方法以提高波形识别的准确率,寻找适合计算机实现又具诊断价值的诊断标准,是改进心电图自动诊断效果,扩大其应用范围的根木途径。

根据MATLAB的心电信号分析

根据MATLAB的心电信号分析

计算机信息处理课程设计说明书题目:基于MATLAB的心电信号分析学院(系):年级专业:学号:学生姓名:指导教师:燕山大学课程设计(论文)任务书院(系):基层教学单位:说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。

2014年12月 01日摘要心电信号是人们认识最早、研究最早的人体生理电信号之一。

目前心电检测已经成为重要的医疗检测手段,但是心电信号的相关试验及研究依然是医学工作者和生物医学工程人员的重要议题。

信号处理的基本概念和分析方法已应用于许多不同领域和学科中,尤其是数字计算机的出现和大规模集成技术的高度发展,有力地推动了数字信号处理技术的发展和应用。

心电信号是人类最早研究并应用于医学临床的生物电信号之一,它比其他生物电信号便易于检测,并具有较直观的规律性,对某些疾病尤其是心血管疾病的诊断具有重要意义。

它属于随机信号的一种,用数字信号处理的方法和Matlab软件对其进行分析后,可以得到许多有用的信息,对于诊断疾病有非常重要的参考价值。

本课题基于matlab对心电信号做了简单的初步分析。

直接采用Matlab 语言编程的静态仿真方式、对输入的原始心电信号,进行线性插值处理,并通过matlab语言编程设计对其进行时域和频域的波形频谱分析,根据具体设计要求完成程序编写、调试及功能测试,得出一定的结论。

关键词: matlab 心电信号线性插值频谱分析目录一:课题的目的及意义 (1)二:设计内容与步骤 (1)1.心电信号的读取 (1)2.对原始心电信号做线形插值 (3)3.设计滤波器 (5)4.对心电信号做频谱分析 (6)三:总结 (7)四:附录 (8)五:参考文献 (12)一:课题目的及意义心电信号是人类最早研究并应用于医学临床的生物信号之一,它比其它生物电信号更易于检测,并且具有较直观的规律性,因而心电图分析技术促进了医学的发展。

然而,心电图自动诊断还未广泛应用于临床,从国内外的心电图机检测分析来看,自动分析精度还达不到可以替代医生的水平,仅可以为临床医生提供辅助信息。

matlab中ecg用法 -回复

matlab中ecg用法 -回复

matlab中ecg用法-回复在MATLAB中,ECG(心电图)是用于分析人类心脏电活动的常见应用之一。

ECG可以提供有关心脏的结构和功能方面的重要信息,包括心率、心律、心脏电轴等。

在本文中,我们将逐步介绍如何在MATLAB中使用ECG进行心电信号分析。

第一步:加载ECG数据首先,我们需要加载ECG数据以进行分析。

ECG数据可以以多种格式存储,如.txt、.csv或.mat等。

如果你有一个.ECG文件,你可以使用load 函数将其加载到MATLAB工作区中。

例如:data = load('ecg_data.ecg');这将把名为'ecg_data.ecg'的文件加载到变量data中。

第二步:数据预处理在对ECG数据进行分析之前,通常需要进行一些预处理步骤。

这些步骤包括滤波、去噪和基线漂移校正等。

在MATLAB中,有许多函数和工具箱可以用于执行这些预处理步骤。

例如,对于滤波,你可以使用MATLAB中的低通或高通滤波器函数,如designfilt和filter等。

以下是一个示例代码片段,演示如何使用MATLAB中的滤波器对ECG数据进行低通滤波:fs = 1000; 采样频率fc = 50; 截止频率[b, a] = butter(2, fc/(fs/2), 'low');filtered_data = filter(b, a, data);这将创建一个二阶低通滤波器,并将其应用于数据。

第三步:心率分析一旦对ECG数据进行了预处理,我们就可以开始进行心率分析。

心率是指每分钟心脏跳动的次数,通常以bpm(每分钟节拍数)为单位表示。

在MATLAB中,可以使用不同的方法计算心率,如傅里叶变换、自相关函数等。

以下代码片段演示了如何使用MATLAB中的傅里叶变换计算心率:N = length(data); 数据长度Y = abs(fft(data)); 计算信号的傅里叶变换f = (0:N-1)*(fs/N); 计算频率轴[~, idx] = max(Y(f>0.5 & f<3)); 选择心率峰值heart_rate = 60 * (f(idx+1)); 计算心率(每分钟节拍数)这将返回估计的心率值。

如何使用Matlab进行心电信号分析和心律失常检测

如何使用Matlab进行心电信号分析和心律失常检测

如何使用Matlab进行心电信号分析和心律失常检测引言:心电信号分析和心律失常检测是临床医学和生物医学工程领域中重要的研究内容。

随着计算机技术的发展和数据处理的能力提升,基于Matlab的心电信号分析方法逐渐成为了研究人员的首选。

本文将介绍如何使用Matlab进行心电信号分析和心律失常检测,包括数据预处理、特征提取和分类识别等方面。

一、数据预处理心电信号采集设备通常会在测量过程中引入一些噪声,而且数据量庞大,因此在进行心电信号分析之前,首先需要进行数据预处理。

Matlab提供了多种函数和工具箱用于数据预处理,包括滤波、降噪和去除基线漂移等。

1.1 滤波滤波是常用的数据预处理方法之一,可以去除心电信号中的高频噪声和低频干扰。

Matlab中提供了多种数字滤波器设计和滤波函数,如低通滤波器、高通滤波器和带通滤波器等。

根据信号的特点和需求,选择适当的滤波器进行滤波处理。

1.2 降噪降噪是为了减少心电信号中的噪声干扰,提高信号的质量。

Matlab提供了多种降噪方法,如小波降噪、局部平均法和高斯滤波等。

可以根据信号的特点选择适当的降噪方法进行处理。

1.3 基线漂移去除由于测量设备和生理原因等因素,心电信号中常常存在基线漂移,即信号整体上升或下降的现象。

这种漂移会干扰信号的分析和处理,因此需要进行去除。

Matlab提供了多种去除基线漂移的方法,如线性拟合法和小波去噪法等。

二、特征提取心电信号中包含了丰富的生理和病理信息,通过提取心电信号的特征可以更好地进行心律失常的检测和分类。

Matlab提供了多种特征提取函数和工具箱,如时域分析、频域分析和小波分析等。

2.1 时域分析时域分析主要针对心电信号的时间特性进行分析,如心跳间期、QRS波峰和ST段变化等。

Matlab提供了多种时域特征提取函数,如平均心率、标准差和RR间期等。

2.2 频域分析频域分析主要针对心电信号的频率特性进行分析,如心率变异性和频率成分等。

Matlab提供了多种频域特征提取函数,如功率谱密度和频谱熵等。

利用MATLAB进行心电图信号处理与分析

利用MATLAB进行心电图信号处理与分析

利用MATLAB进行心电图信号处理与分析心电图(Electrocardiogram,简称ECG)是一种记录心脏电活动的重要手段,通过对心电图信号的处理与分析可以帮助医生判断患者的心脏健康状况。

MATLAB作为一种功能强大的科学计算软件,被广泛运用于心电图信号处理与分析领域。

本文将介绍如何利用MATLAB进行心电图信号处理与分析,包括信号预处理、特征提取、心率检测等内容。

1. 信号预处理在进行心电图信号处理之前,首先需要对原始信号进行预处理,以提高后续分析的准确性和可靠性。

常见的信号预处理方法包括滤波、去噪和基线漂移校正等。

1.1 滤波滤波是信号处理中常用的技术,可以去除信号中的噪声和干扰,保留有用的信息。

在心电图信号处理中,常用的滤波方法包括低通滤波、高通滤波和带通滤波等。

MATLAB提供了丰富的滤波函数和工具箱,可以方便地实现各种滤波操作。

1.2 去噪心电图信号往往受到各种干扰和噪声的影响,如肌肉运动、呼吸运动等。

去噪是信号预处理中至关重要的一步,可以有效提取出心电活动的真实信息。

MATLAB中有多种去噪算法可供选择,如小波去噪、均值滤波等。

1.3 基线漂移校正基线漂移是指心电图信号中由于各种原因引起的直流成分变化,会影响后续特征提取和分析的准确性。

在预处理阶段需要对基线漂移进行校正,以保证后续分析结果的可靠性。

MATLAB提供了多种基线漂移校正方法,如多项式拟合、小波变换等。

2. 特征提取特征提取是对经过预处理的心电图信号进行进一步分析和抽取有意义的特征信息。

常见的特征包括R峰位置、QRS波群宽度、ST段变化等,这些特征可以反映心脏活动的规律和异常情况。

2.1 R峰检测R峰是心电图中QRS波群中最高点对应的峰值,通常用于计算心率和分析心脏节律。

MATLAB提供了多种R峰检测算法,如基于阈值法、基于波形相似性比较法等。

通过R峰检测可以准确计算心率,并进一步分析心脏节律是否规律。

2.2 QRS波群特征提取除了R峰位置外,QRS波群中的形态和宽度也包含了丰富的信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于matlab的心电信号预处理一、心电信号(1)心电信号的特性人体心电信号是非常微弱的生理低频电信号,通常最大的幅值不超过5mV,信号频率在0.05~100Hz之间。

心电信号是通过安装在人体皮肤表面的电极来拾取的。

由于电极和皮肤组织之间会发生极化现象,会对心电信号产生严重的干扰。

加之人体是一个复杂的生命系统,存在各种各样的其他生理电信号对心电信号产生干扰。

同时由于我们处在一个电磁包围的环境中,人体就像一根会移动的天线,从而会对心电信号产生50Hz左右的干扰信号。

心电信号具有微弱、低频、高阻抗等特性,极容易受到干扰,所以分析干扰的来源,针对不同干扰采取相应的滤除措施,是数据采集重点考虑的一个问题。

常见干扰有如下几种:①工频干扰②基线漂移③肌电干扰心电信号具有以下几个特点:·信号极其微弱,一般只有0.05~4mV,典型值为1mV;·频率围较低,频率围为0.1~35Hz,主要集中在5~20Hz;·存在不稳定性。

人体部各器官问的相互影响以及各人的心脏位置、呼吸、年龄、是否经常锻炼等因素,都会使心电信号发生相应变化;·干扰噪声很强。

对心电信号进行测量时,必然要与外界联系,但由于其自身的信号非常微弱,因此,各种干扰噪声非常容易影响测量。

其噪声可能来自工频(50Hz)干扰、电极接触噪点、运动伪迹、肌电噪声、呼吸引起的基线漂移和心电幅度变化以及其他电子设备的机器噪声等诸多方面。

(2)心电信号的选择本次实验所采用的心电信号来自MIT-BIH库,库中有48组失常的心电信号,要在其中找出符合实验要求的心电信号(即含有肌电干扰、工频干扰和基线漂移)。

(3)正常心电信号波形图1是正常心电信号在一个周期的波形,由P波、QRS波群和T波组成。

P波是由心房的去极化产生的,其波形比较小,形状有些圆,幅度约为0.25mV,持续时间为0.08~0.11s。

窦房结去极化发生在心房肌细胞去极化之前,因而在时间上要先于P波,只是窦房结处于心脏部,其电活动在体表难以采集。

P-R间期是指P波起点和QRS波群起点所跨越的时间,是窦房结产生的兴奋,经过右心房、左心房、房室交接区、房室束、左右束支之后,传到到心室所需要的时间。

在正常的体表心电图中,P-R间期的值为0.12~0.2s,其部分时间是兴奋在房室交界区传导所需要的时间。

P-R 间期也称为房室传导时间。

P-R段是指P波终点和QRS波群起点之间所跨越的时间。

在正常的体表心电图中,P-R段的心电信号电位值都是接近基线水平的很小点位。

在P-R段期间,左右心房同时兴奋,因而两者产生的综合电场对体表心电图的影响较小。

另外,此时的兴奋还处于房室交界区和房室束特殊传导系统中,没有到达心室,因而没有产生较大波动的体表心电图信号。

QRS波群是左右心室肌细胞一次发生去极化所产生的膜外负电位在体表的反应。

QRS波群的持续时间为0.06~0.1s。

由于心室肌细胞在兴奋过程中的综合电场向量多次发生改变,因而形成了体表心电图小和方向多次发生变化的心电信号,其中QRS波群中第一个向下的波为Q波,第一个向上的波为R波,R波后面的为S波。

S-T段是指QRS波群终点和T波起点之间所跨越的时间。

S-T段期间,左右心室的肌细胞都处于兴奋期间,因而两者形成的综合电场向量在体表心电图中的贡献非常小,导致S-T 段心电信号处于大约基线的水平。

T波由心室肌细胞的复极化产生,其幅度为0.1~0.8mV,持续时间为0.05~0.25s。

由于复极化差异的存在,T波的方向和QRS波群主波的方向一致。

在R波向上的情况下,T波的幅度一般都超过R波幅度的1/10。

Q-T间期是指QRS波群起点和T波终点所跨越的时间段,代表心室肌细胞开始去极化到结束复极化所需要的时间,与心率呈负相关。

二、滤波器的选择1.肌电干扰的滤除—低通滤波器通常来说,肌电信号的频率为20~5000HZ,其主要成分的频率与肌肉的类型有关,一般在30~300HZ,而心电信号的频率主要集中在5~20HZ,所以选择低通滤波器来滤除肌电干扰。

巴特沃斯滤波器的特点是通频带的频率响应曲线最为平坦,没有起伏,而在阻频带则逐渐下降为零。

巴特沃斯滤波器的振幅对角频率单调下降,并且滤波器的阶数越高,在阻频带幅度衰减速度越快,其他滤波器高阶的振幅对角频率图和低阶数的振幅对角频率有不同的形状。

2.工频干扰的抑制—带陷滤波器工频干由于供电网络无所不在,因此50Hz的工频干扰是最普遍的,也是心电信号的主要干扰来源。

50HZ陷波器的软件设计方法多种多样,常见方法有小波变换滤波、自适应滤波、模板匹配滤波等,但都需要手工计算获得滤波器的参数,运算比较复杂。

滤波器设计中,使用IIR滤波器,可使阶数降低,运算量减少,但破坏了相位特性;使用FIR滤波器既能得到很好的滤波效果,是波形失真达到最下,而且,FIR滤波器可以做成线性相位特性,这正好是心电信号滤波所需要的。

利用MATLAB设计FIR滤波器的方法有窗函数法、频率抽样法和切比雪夫逼近法等,本次课设采用窗函数法设计50HZ陷波滤波器。

窗函数方法的基本思想是:首先根据要求选择一个适当的理想低通滤波器,因为其脉冲响应是非因果且无限长的,用最优化窗结构窗函数来截取它的脉冲响应,从而得到线性相位和因果的FIR滤波器。

Kaiser窗是接近最优化窗结构的窗函数,它可以根据不同的参数调整滤波器的各项指标,因此采用Kaiser窗函数进行滤波器设计扰的抑制—带陷滤波器3.基线漂移的纠正—零相移滤波器零相移滤波器是指一个信号序列经过该滤波器滤波后相位不发生变化,即该滤波器系统函数的相位响应为零。

显然,对于因果系统来说是不可能实现零相移的,在事先无法知道信号相位谱的情况下,实现零相移是不可能的。

零相移只能是对非因果系统来说的。

具体而言,零相移滤波器使用了当前信号点前面和后面的信号点所包含的信息,从本质上说就是使用了“未来的信息”来消除相位失真。

三、程序及结果1.心电信号读取因为对MIT-BIH库不是很熟悉,在官网上看过之后,还是不懂(全英文,而且是医学方面的。

)。

所以,此处的心电信号的读取程序是来自网上的rddata.m 。

如果自己要用的话,在选取好要处理的心电信号后,把路径更改,并选取合适的样本数,就可以了。

我选取的是MIT-BIH中的109,样本数为1500,下图为心电信号读取后的图形:从图2红色曲线可以看到,波形上存在许多“毛刺”,并且其相位在发生变化(以波峰为例,各波峰大致不在一条水平线上,即所说的“基线漂移”),部分波形收到的干扰比较严重,比较符合对信号处理的要求。

2.心电信号的预处理(1)肌电信号的滤除[plain] view plain copy 在CODE上查看代码片派生到我的代码片clc;%------------------------------低通滤波器滤除肌电信号------------------------------Fs=1500; %采样频率fp=80;fs=100; %通带截止频率,阻带截止频率rp=1.4;rs=1.6; %通带、阻带衰减wp=2*pi*fp;ws=2*pi*fs;[n,wn]=buttord(wp,ws,rp,rs,'s'); %'s'是确定巴特沃斯模拟滤波器阶次和3dB截止模拟频率[z,P,k]=buttap(n); %设计归一化巴特沃斯模拟低通滤波器,z为极点,p为零点和k为增益[bp,ap]=zp2tf(z,P,k) %转换为Ha(p),bp为分子系数,ap为分母系数[bs,as]=lp2lp(bp,ap,wp) %Ha(p)转换为低通Ha(s)并去归一化,bs为分子系数,as为分母系数[hs,ws]=freqs(bs,as); %模拟滤波器的幅频响应[bz,az]=bilinear(bs,as,Fs); %对模拟滤波器双线性变换[h1,w1]=freqz(bz,az); %数字滤波器的幅频响应m=filter(bz,az,M(:,1));figurefreqz(bz,az);title('巴特沃斯低通滤波器幅频曲线');figuresubplot(2,1,1);plot(TIME,M(:,1));xlabel('t(s)');ylabel('mv');title('原始心电信号波形');grid;subplot(2,1,2);plot(TIME,m);xlabel('t(s)');ylabel('mv');title('低通滤波后的时域图形');grid;N=512n=0:N-1;mf=fft(M(:,1),N); %进行频谱变换(傅里叶变换)mag=abs(mf);f=(0:length(mf)-1)*Fs/length(mf); %进行频率变换figuresubplot(2,1,1)plot(f,mag);axis([0,1500,1,50]);grid; %画出频谱图xlabel('频率(HZ)');ylabel('幅值');title('心电信号频谱图');mfa=fft(m,N); %进行频谱变换(傅里叶变换)maga=abs(mfa);fa=(0:length(mfa)-1)*Fs/length(mfa); %进行频率变换subplot(2,1,2)plot(fa,maga);axis([0,1500,1,50]);grid; %画出频谱图xlabel('频率(HZ)');ylabel('幅值');title('低通滤波后心电信号频谱图');wn=M(:,1);P=10*log10(abs(fft(wn).^2)/N);f=(0:length(P)-1)/length(P);figureplot(f,P);gridxlabel('归一化频率');ylabel('功率(dB)');title('心电信号的功率谱');以上程序的结果如下:图3是所设计的巴特沃斯数字低通滤波器的幅频响应曲线,图3是在时域滤波前后心电信号的波形图,图5是在频域滤波前后心电信号的频谱图,图6是心电信号的功率谱图(2)工频干扰的抑制[plain] view plain copy 在CODE上查看代码片派生到我的代码片%-----------------带陷滤波器抑制工频干扰-------------------%50Hz陷波器:由一个低通滤波器加上一个高通滤波器组成%而高通滤波器由一个全通滤波器减去一个低通滤波器构成Me=100; %滤波器阶数L=100; %窗口长度beta=100; %衰减系数Fs=1500;wc1=49/Fs*pi; %wc1为高通滤波器截止频率,对应51Hzwc2=51/Fs*pi ;%wc2为低通滤波器截止频率,对应49Hzh=ideal_lp(0.132*pi,Me)-ideal_lp(wc1,Me)+ideal_lp(wc2,Me); %h为陷波器冲击响应w=ser(L,beta);y=h.*rot90(w); %y为50Hz陷波器冲击响应序列m2=filter(y,1,m);figuresubplot(2,1,1);plot(abs(h));axis([0 100 0 0.2]);xlabel('频率(Hz)');ylabel('幅度(mv)');title('陷波器幅度谱');grid;N=512;P=10*log10(abs(fft(y).^2)/N);f=(0:length(P)-1);subplot(2,1,2);plot(f,P);xlabel('频率(Hz)');ylabel('功率(dB)');title('陷波器功率谱');grid;figuresubplot (2,1,1); plot(TIME,m);xlabel('t(s)');ylabel('幅值');title('原始信号');grid;subplot(2,1,2);plot(TIME,m2);xlabel('t(s)');ylabel('幅值');title('带阻滤波后信号');grid;figureN=512subplot(2,1,1);plot(abs(fft(m))*2/N);axis([0 100 0 1]);xlabel('t(s)');ylabel('幅值');title('原始信号频谱');grid;subplot(2,1,2);plot(abs(fft(m2))*2/N);axis([0 100 0 1]);xlabel('t(s)');ylabel('幅值');title('带阻滤波后信号频谱');grid;其中,ideal_lp()函数在另一个M文件中,具体如下:%理想低通滤波器%截止角频率wc,阶数Mefunction hd=ideal_lp(wc,Me)alpha=(Me-1)/2;n=[0:Me-1];p=n-alpha+eps; %eps为很小的数,避免被0除hd=sin(wc*p)./(pi*p); %用Sin函数产生冲击响应以上程序的结果如下:图7是带陷滤波器的幅度谱和功率谱,从图中可以看到在50Hz处,滤波器的幅度很大,而且功率在-150以下,说明带陷性能较好。

相关文档
最新文档