小波变换 python MITBIH数据库 基线漂移去噪
文章目录
- 基线噪声
- 小波基选择
- 分解示意图
- 代码实现与时频域分析
- 问题分析
基线噪声
对于心电信号,,基线信号存在于脉搏信号中。对于基线,一般频率小于0.5HZ,不存在与心电信号频谱重叠的区域。因此采用基于sym8小波函数对信号进行分解,提取0~0.1HZ内的基线信号。
小波基选择
分解示意图
如上图所示,9层分解之后,得到的CA9的频率范围是0~0.703125HZ,
如果只分解8层,则会CD8频率范围1.40625~2.8125,因此选择9层分解。
对于MIT-BIH数据库(采样率360hz)的数据进行小波9层分解,每一层分解如图所示。
代码实现与时频域分析
cA9, cD9, cD8, cD7, cD6, cD5, cD4, cD3, cD2, cD1 = coeffs #数字越小频率越大
注意代数与频率的对应关系,CD1代表的是高频,CA9则是本次分解的最低频。
小波变换前后的时频域图像如下图所示:
可以看到小波变换之后,0HZ周围的噪声已经减弱。
代码也很简单,本网站有很多,需要的也可以留言邮箱。
def WT(data,wavelet,level):#小波变换之后Data = data.flatten()coeffs = pywt.wavedec(data = Data, wavelet = wavelet, level = level) # print(len(coeffs))cA9, cD9, cD8, cD7, cD6, cD5, cD4, cD3, cD2, cD1 = coeffs #数字越小频率越大plt.figure(figsize=(16,4))plt.subplot(1,2,1)plt.plot(cA9)plt.title('cA9')plt.subplot(1,2,2)plt.plot(cD1)plt.title('cD1')# 将高频信号cD1、cD2,低频信号CA9置零cD1.fill(0)cD2.fill(0)cD9.fill(0)cA9.fill(0)#180~360, 90~180,0.703125~1.40625,0~0.703125 均置为0rdata = pywt.waverec(coeffs, wavelet='sym8')return rdata
如果需要软阈值滤波:
threshold = (np.median(np.abs(cD1)) / 0.6745) * (np.sqrt(2 * np.log(len(cD1))))
# 将高频信号cD1、cD2置零
cD1.fill(0)
cD2.fill(0)
# 将其他中低频信号按软阈值公式滤波
for i in range(1, len(coeffs) - 2):coeffs[i] = pywt.threshold(coeffs[i], threshold)
下面是相关滤波器设计的官网:
FIR filter design with Python and SciPy
问题分析
如果需要在k级进行分解,则2^k必须均匀地划分为信号的长度。如果原始信号的长度不正确,可以使用wextend函数对其进行扩展,
因此分解尺度过大的问题,源自不是整数倍
小波变换 python MITBIH数据库 基线漂移去噪相关推荐
- python MIT-BIH 数据集心拍分类 从R点提取到19类R点心拍分类到AAMI标准5分类的数据集打包实现 良心详解版 全网唯一
python MIT-BIH 心拍分类实现 前言 这可能是我自认为写的最难的一篇文章,对于所有做心电信号分类的同学来说这都是一大关以下所有的代码都是自己手敲的,这整个过程很复杂,按照我一贯的思路,我会 ...
- 数据科学+python+R+数据库+机器学习+(速查表)cheat sheets大全
数据科学+python+R+数据库+机器学习+(速查表)cheat sheets大全 Learn, compete, hack and get hired! 学习.竞争.精进.996. 东西永远学不完 ...
- Python操作数据库之 MySQL
Python操作数据库之MySQL 一.安装Python-MySQLdb模块 Python-MySQLdb是一个操作数据库的模块,Python 通过它对 mysql 数据实现各种操作. 如果要源码安装 ...
- Python 操作数据库(1)
在关系数据库中,数据库表是一系列二维数组的集合,用来代表和储存数据对象之间的关系.它由纵向的列和横向的行组成,例如一个有关作者信息的名为 authors 的表中,每个列包含的是所有作者的某个特定类型的 ...
- python生成数据库指令_Python学习—数据库操作
python2中操作数据库:MySQLdb python3中操作数据库:pymysql python接连数据库 1.创建数据库连接: mysql.connect()函数 2.执行数据库操作: 执行数据 ...
- 表操作,数据操作,单表查询,python操作数据库
1.表操作 创建 create table 删除 drop table 查看表结构 desc 表/show create table 表 修改 alter table 表名 rename 新表名 al ...
- 【机器学习算法-python实现】矩阵去噪以及归一化
1.背景 项目需要,打算用python实现矩阵的去噪和归一化.用numpy这些数学库没有找到很理想的函数,所以一怒之下自己用标准库写了一个去噪和归一化的算法,效率有点低,不过还能用,大家如果有需 ...
- Py之Data Base:Python和数据库的那些嘻嘻哈哈事详细攻略
Py之Data Base:Python和数据库的那些嘻嘻哈哈事详细攻略 目录 一.Python 数据库的Connection.Cursor两大对象 一.Python 数据库的Connection.Cu ...
- matlab读取心电txt数据画图,图解MIT-BIH数据库心电数据下载和Matlab读取程序
开源数据网站PhysioNet(https://physionet.org/)提供了诸如MIMIC.MIT-BIH等丰富的生理信号数据库,这些数据库对于人体生理信号的分析.数据挖掘有着非常大的作用.M ...
最新文章
- Linux主机WordPress伪静态设置方法
- linux中的nm命令
- SparkSQL 内置函数的使用(JAVA与Scala版本)
- 【APICloud系列|37】 银联支付的实现
- PostgreSQL如何使用PLJava支持Java编程
- Objective-C 【从文件中读写字符串(直接读写/通过NSURL读写)】
- 不论报任何错误 都是网络源有问题,安装spacemacs报错的解决方式
- QT5(一):HelloWord
- Qt之QRoundProgressBar(圆形进度条)
- 数据库SQL语句之外键
- 华为HCIP(HCNP)笔记,还不快快收藏!
- c程序-RGB转十六进制
- HDU:2055 An easy problem
- 线性代数 --- 向量的内积与正交(垂直),Orthogonal Vectors
- Wordpress建站教程:网站SEO优化
- ROS Spinning-----简介
- # CF #808 Div.2(A - C)
- 《把时间当作朋友》读书笔记(七)-- 管理(四)
- [BZOJ4180] 字符串计数
- python绘制横向柱状图 妈妈再也不用担心我不会画图了