二、生理信号处理 ——1.心电信号(含Matlab代码及数据)

news/2024/11/23 0:31:42/

本文适合快速了解心电信号,并能够进行数据的滤波处理。


一. 心电数据预处理(消除工频干扰、基线漂移)

* 心电数据及rdmat函数见文章底部

1. 导入心电数据

## 心电图导入及读取
clc;
[TIME,M,Fs,siginfo]=rdmat('100m');# 通过读取函数ramat对心电图进行处理
Fs=1500;# 采样频率
plot(TIME,M);

2. 选取前1000个数据点进行后续处理

ecg = M(1:1000);
TIME = TIME(1:1000);
plot(TIME,ecg)

3. 去除心电信号中的50Hz频率干扰(国内通常为50Hz)——陷波滤波器

## Butterworth 陷波滤波器-去除工频干扰
# 设计滤波器
d = designfilt('bandstopiir','FilterOrder',2, ...'HalfPowerFrequency1',49,'HalfPowerFrequency2',51, ...'DesignMethod','butter','SampleRate',Fs);
#应用滤波器去除50Hz干扰
ecg_50 = filtfilt(d,ecg);

4. 去除心电信号中的低频信号(5Hz以下)——消除基线漂移

##bandpass滤波器-解决基线漂移
fmaxd_1=5;# 截止频率为5Hz
fmaxn_1=fmaxd_1/(Fs/2);
[B,A]=butter(1,fmaxn_1,'low');
ecg_low=filtfilt(B,A,ecg_50);# 通过5Hz低通滤波器的信号
ecg1=ecg_50-ecg_low; # 减去5Hz低频信号
plot(TIME,ecg1)
xlabel('t(s)');
ylabel('mv');
title('期望信号');

5. 添加随机噪声

* wgn函数:随机添加白噪声

##添加随机噪声信号
Noise_White = (0.1*wgn(1,length(TIME),2))'; 
plot(Noise_White)
title('噪声信号');

6. 噪声干扰后信号

##噪声干扰后信号
Mix_Signal = ecg1 + Noise_White;
plot(TIME,Mix_Signal)
xlabel('t(s)');
ylabel('mv');
title('噪声干扰后信号');

二. 滤波处理(维纳滤波)

* h为维纳滤波运行后得到的数值,运行下文中维纳滤波器设计部分可得:

一、信号处理 ——3.维纳滤波(含matlab代码)_蛮有趣的_的博客-CSDN博客

##维纳滤波
Signal_Filter = filter(h,1,Mix_Signal);# 将输入信号通过维纳滤波器
figure(1)
plot(TIME,Signal_Filter)
xlabel('t(s)');
ylabel('mv');
title('维纳滤波后信号');

三. 均方误差

* 引入噪声后信号相对原信号的统计均方误差:

mse1 = 0.0153

* 滤波后的信号相对原信号的统计均方误差:

mse2 = 0.0069

应用维纳滤波后,信号更接近于原始信号。


* 心电数据及rdmat函数

链接:https://download.csdn.net/download/qq_41958946/86841684

心电数据原始来源:MIT-BIH Arrhythmia Database(mitdb)


http://www.ppmy.cn/news/694923.html

相关文章

Matlab心电信号预处理

Matlab心电信号预处理 一、内容 在网上下载心电信号的公开数据库,实现对心电信号的预处理,包括噪声去除、肌电干扰的去除、工频干扰的抑制、基线漂移的纠正等。 二、实验原理 1、肌电干扰的滤除 肌电干扰由人体肌肉颤动引起,发生率具有随机性…

肌电信号采集电路分析

最近在开发肌电信号的采集,表面肌电信号是非常微弱的生物信号,正常人体表面肌电信号赋值为0--1.5mV,主要能量频段集中在10--150Hz。电路主要是根据原始信号,设计相应的放大电路、滤波电路,下面直接放原理图说明。 一级…

肌电信号的数据理解

目录 一、基于自采肌电数据的理解 二、基于Ninapro肌电数据的理解 本文主要是解释说明肌电数据,只有理解了数据的格式和意义,才能更进一步的去处理数据,从自采的肌电数据角度和Ninapro公共数据集的角度来理解数据。 一、基于自采肌电数据的…

表面肌电信号(sEMG)介绍

表面肌电信号(Surface Electromyography)是众多生物电信号中的一种,也是相对来说最容易获取的一种电生理信号。将电极片放置在人体的皮肤表面,可以记录到皮肤表面因肌肉收缩而产生的微弱的电位差,而这个微弱的电位信号…

心电信号详细介绍

心电信号的介绍 心电图(electrocardiogram,简称ECG),采取心脏兴奋的 电活动过程,它再心脏基本功能以及病理研究方面具有重要的参考价值。 1.P波:是心电信号的准周期出现的第一个波。 2.QRS波群:由向下的Q波、尖高向上…

心电信号预处理

一、nk2心电预处理库 这是一个用于处理心电信号的 Python 算法。主要功能包括对原始心电图 (ECG) 信号进行去噪、检测各种心电图特征波峰(如 R 波、P 波、Q 波、S 波和 T 波等)以及计算心率等。 具体过程如下: 首先对输入的原始心电信号进…

【心电信号】基于matlab小波变换心电信号去噪【含Matlab源码 956期】

⛄一、小波变换心电信号去噪简介 0 引言 心电信号是人类最早研究的生物信号之一, 相比其他生物信号更易于检测, 且具有直观的规律。心电图的准确分析对心脏病的及早治疗有重大的意义。人体是一个复杂精密的系统, 有许多不可抗的外界因素, 得到纯净的心电信号非常困难。可以采用…

心电信号的滤波分析

心电信号的滤波分析 前言 ​ 2020电赛器材表出来的时候,里面有一块ADC:ADS1292。根据数据手册可以知道这是一块专用测量心电信号的ADC,结合上半年的疫情,这次电赛的心电测量估计是跑不掉了。ADC只是用来测量数据的,重…