【心电信号】小波阙值心电信号去噪【含Matlab源码 2188期】

news2024/11/29 10:41:12

⛄一、小波阈值法去噪概述

电能质量扰动信号的噪声大多以高斯白噪声的形式存在,利用小波变换对信号进行多分辨率分解,由于小波变换具有去除数据相关性的特点,故可以将有用信号与噪声的能量分离开来。信号中有效的信息主要集中在较大的小波系数上,而噪声大多分布在较小的系数中,因此通过设置阈值可以将低于该阈值的系数当做噪声去除从而达到滤波的目的。

假设一个线性非平稳并含噪的一维信号表达式如下:
在这里插入图片描述
其中,f(t)为原始信号,ε(t)为高斯白噪声,x(t)为含噪信号。接着根据该信号的特点,采用合适的小波基和分解层数,对x(t)进行一维离散小波变换:
在这里插入图片描述
其中,ψ(t)为离散小波尺度函数。式(2)对应的小波系数表达式为:
在这里插入图片描述
其中,dj,k为含噪信号x(t)经过小波变换多尺度分解后的各层小波细节系数,uj,k与ej,k分别为原始信号f(t)和噪声信号ε(t)经过小波变换多尺度分解后的细节系数。基于小波阈值去噪的流程图如图1所示。
在这里插入图片描述
图1 小波去噪流程
小波阈值去噪的具体步骤如下:

(1)多尺度分解:根据含噪信号的特点选择适合的小波基和分解层数,经过离散小波变换得到各层的小波细节系数dj,k;

(2)阈值去噪:通过确定阈值λ和阈值函数对小波细节系数dj,k进行处理,得到处理后的各层小波细节系数d’j,k;

(3)小波重构:依据得到的小波细节系数d’j,k和近似系数对电能质量扰动信号进行重构,得到去噪后的扰动信号x’(t)。

这些步骤中,阈值和阈值函数的选择是小波阈值去噪的关键,直接影响着重构信号的质量。如果选择的阈值过大,则会导致有用的信号被当做噪声滤除;阈值过小,则导致噪声的滤除不够彻底。传统的硬、软阈值函数如下所示:
在这里插入图片描述
软阈值函数的定义:
在这里插入图片描述
式中sign(dj,k)为符号函数,,N为信号长度;σ=Mmid/0.6745,Mmid是最低层小波系数的中位数。根据硬、软阈值函数可以看出,对含噪信号进行小波多尺度分解后,将每一层的细节系数与阈值相比较,保留大于阈值的系数,将小于阈值的系数置零,由此得到去除噪声后的细节系数。但是,硬阈值函数在信号长度内不是连续的,在λ处存在间断点,使得重构的信号不够平滑,重构信号后会产生“吉布斯”现象。软阈值函数虽然保证了连续性的问题,但是其噪声估计值与真实值存在着固定的偏差,不仅容易造成噪声去除不够彻底,还可能会丢失部分有用的信息。

2 小波阈值去噪的改进方法
通过上一节对硬、软阈值的分析可知,传统小波阈值去噪方法对于各层的小波系数阈值的设置是恒定不变的,但是噪声在各层小波系数中都是不太相同的,因此采用固定的阈值其自适应性较差,去噪效果不太理想。为了解决上述的这些问题,提出了一种改进的小波阈值去噪算法,它会根据噪声的分布情况自适应的修正阈值,并且其阈值函数通过可变参数可以实现多种不同的软硬特征,使其更加适用于多种不同类型的电能质量扰动信号。

2.1 阈值的修正
阈值作为区分有效信息与噪声的边界,它的选择直接影响着去噪效果。传统的通用阈值对每个尺度的小波细节系数都做了同样的处理,但是噪声的分布具有随机性,用一个固定的阈值进行处理会使得有些尺度上的有用信息丢失,而有些尺度上的噪声滤除的不够干净,这样就无法达到较好的去噪效果。考虑到噪声的小波细节系数随尺度的增加而减小,而信号的小波细节系数随尺度的增加而增大。因此为了使阈值的取值更加符合噪声的变化规律,本章结合了文献[7]中的峰和比(peak-to-sum ratio,PSR),提出了基于PSR的修正因子,对通用阈值进行修正,第j层小波细节系数的峰和比公式如下:
在这里插入图片描述
式中,dj,k是小波细节系数。在小波的多尺度分解中,信号的有用信息主要集中在较大的小波细节系数上,而噪声成分则分散在各层的小波细节系数中。因此,当Sj值较大时,意味着这一尺度存在着较大的系数,说明了该层包含的有用信息较多;而Sj值较小时,则意味者这一尺度存在着较小的系数,说明了该层包含的噪声较多。基于这一特点,则引入修正因子Fj为:
在这里插入图片描述
式中,Lj为第j层小波细节系数的长度。将Fj与ln(j+1)相结合来对阈值进行自适应调节。经过修正后的阈值为:
在这里插入图片描述
由式(8)可知,ln(j+1)随着j的增加逐渐增大,相应的阈值就逐渐减小,这符合噪声分布的一般规律。

2.2 改进阈值函数
为了克服传统硬阈值函数在阈值处不连续和软阈值函数会造成部分高频信息丢失的问题,提出了一种新的阈值函数如下所示:
在这里插入图片描述
式中sign函数为符号函数。该阈值函数在(-!,+!)内连续,证明如下:
在这里插入图片描述
该函数在λj处连续,同理可得函数在-λj处也是连续的。证明其确实克服了硬阈值函数在阈值处不连续的问题。并且该阈值函数在dj,k→±!时等效于硬阈值函数。证明如下:
在这里插入图片描述
由上式可以看出,随着小波细节系数dj,k的增加,新阈值函数曲线逐渐向硬阈值函数逼近,克服了软阈值函数所存在的恒定偏差的问题。新阈值函数的示意图如图2所示。
在这里插入图片描述
图2 新阈值函数曲线图
2.3 小波基与分解层数
应用小波变换对电能质量扰动信号进行去噪、突变点定位和特征提取时,小波基的选择至关重要,只有选择了合适的小波基,才能准确的对电能质量扰动进行分析。因此,在实际应用中,需要根据所选信号的特征来选择合适的小波基。

小波变换的实质是用一系列的小波函数去逼近原始信号的过程,对于同一个信号,选取不同的小波基,其小波变换后的结果也是不同的。对电能质量信号进行小波变换分析,根据其波形的特点,需要采用时域和频域同时具有良好的局部性,且对不规则的部分比较敏感的小波。通常利用传统的软、硬阈值函数来考察小波变换对信号去噪效果的影响。为了验证去噪效果,通常采用信噪比(Signal Noise Ratio,SNR)和均方根误差(Root Mean Square Error,RMSE)作为评价标准。其定义表达式如下所示:
在这里插入图片描述
当信噪比(SNR)越高,均方根误差(RMSE)越低时,就证明了该信号的去噪效果越好。这里选择电压中断扰动信号作为原始数据,通过将不同类型的小波基函数与软、硬阈值函数相结合来进行小波阈值去噪。

⛄二、部分源代码

t=importdata(‘ecg_fit_bih.txt’);%读入数据
n=1:1000;
subplot(311),plot(n,t(1:1000,2));title(‘原始信号’)
x=awgn(t(1:1000,2),20,‘measured’);%加入20db白噪声
subplot(312),plot(n,x);title(‘含噪信号’)

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]郑炜.基于改进小波阈值的电能质量扰动信号去噪算法[J].电气开关. 2021,59(01)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/41536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Vue】Vuex-store

Vuex是什么? Vuex是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间数据的共享。 像一个仓库一样! 使用Vuex统一管理状态的好处? 1.能够在vuex中集中管理共享的数据,易于开发和后期维护 2.能…

二叉查找树(1)-二叉树-数据结构和算法(Java)

文章目录1 前言1.1 二叉查找树定义1.2 二叉查找树的性质2 基本实现2.1 API2.2 实现代码2.2.1 数据表示2.2.2 查找2.2.3 插入3 分析4 有序性相关方法与删除操作4.1 最大键和最小键4.2 向上取整和向下取整4.2.1 向下取整floor()4.2.2 向上取整ceiling()4.3 选择select()4.4 排名r…

微服务框架 SpringCloud微服务架构 3 Eureka 3.1 提供者与消费者

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构3 Eureka3.1 提供者与消费者3.1.1 一些概念3.1.2 一个问题3.1.3 总结3 Eur…

【Hack The Box】linux练习-- Pit

HTB 学习笔记 【Hack The Box】linux练习-- Pit 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月27日🌴 🍭…

单片机如何控制外设?

单片机如何控制外设? 单片机不是直接控制外设的,而是通过配置片上外设寄存器来控制其输出和检测高低电平,进而控制外围器件。 单片机如何配置寄存器的? 下图是单片机驱动 点亮发光二极管 内核从flash里面加载读取指令。内核根据指…

将DataFrame中符合指定条件的数据替换为指定的值:mask()函数

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 将DataFrame中符合指定条件的数据 替换为指定的值:mask()函数 选择题 下列说法错误的是? import pandas as pd myDF pd.DataFrame({"A":[1,2,3], "B":[4,…

java EE初阶 — 如何进行多线程编程

文章目录1.java如何进行多线程编程1.1 最基础的多线程代码1.2 线程的优势2.java中创建线程的方法2.1 继承Thread 重写run2.2 实现Runnable 接口2.3 使用匿名的内部类,继承 Thread2.4 使用匿名类。继承 Runnable2.5 使用 Lambda 表达式(最简答、最推荐&am…

2000-2020年迪博上市公司内部控制指数

2000-2020年迪博上市公司内部控制指数 1、时间:2000-2020年 2、指标包括: 证券代码、证券简称、辖区、证监会行业、申万行业、内部控制指数、报告期 3、指标解释: 上市公司内部控制指数是结合国内上市公司实施内部控制体系的现状&#x…

java——电商购物平台

1.java编译环境的创建,与所需要用到的插件 (1) 选择的编译器为2022版本的intellij idea 首先新建一个空项目 同时,创建完之后,我们点击 文件 -> 项目结构 进入项目结构,点击项目,选择好你想要的jdk版本,若没有,可以在idea中下载,这里我使用openjdk-19, 点击模…

Python适合0基础菜鸟学吗

前言 经常有小伙伴问:Python适合0基础初学编程的人学吗?今天我们就来从Python的功能和特性方面看一下,Python是否能让新人快速上手。 1、非常适合。我觉得刚开始学编程,负担越少越好,应该尽快能做出东西来。刚开始学…

day02 linux常用命令

day02 linux 第一章 Linux常用命令 第一节 进程相关命令 1. 查看进程状态 1.1 命令的使用 ps命令是用于查看进程状态的命令,它常和e参数(对应单词entire,表示全部。具体指显示系统中全部的进程信息。),以及f参数(对应单词full-formate&a…

Node.js 入门教程 13 在 Node.js 中从命令行接收输入

Node.js 入门教程 Node.js官方入门教程 Node.js中文网 本文仅用于学习记录,不存在任何商业用途,如侵删 文章目录Node.js 入门教程13 在 Node.js 中从命令行接收输入13 在 Node.js 中从命令行接收输入 如何使 Node.js CLI 程序具有交互性? 从…

卡塔尔世界杯--程序员的诗和远方

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 卡塔尔世界杯–程序员的诗和远方 2022年卡塔尔世界杯(FIFA World Cup Qatar 2022)第二十二届世界杯足球赛,历史上首次在卡塔尔和中…

【学习笔记44】JavaScript的事件传播

JavaScript的事件传播一、事件传播1、事件传播的说明2、阻止事件传播二、目标冒泡捕获1、冒泡2、捕获三、事件委托1、事件委托的说明2、为什么要用事件委托四、阻止默认事件1、方法一2、方法二一、事件传播 在触发子元素的事件时, 会将行为传播给父级的同类型事件触发了子元素的…

机器学习1综述

文章目录一、综述学习环境:二、机器学习方法的分类1、监督学习;2、非监督学习;3、半监督学习;4、增强学习;三、机器学习方法分类2、批量学习(离线学习)Batch Learing;3、参数学习&am…

二叉树的递归问题

目录 一、相同的树 二、另一棵树的子树 三、翻转二叉树 四、平衡二叉树 五、对称二叉树 一、相同的树 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是…

【毕业设计-课程设计】-超声波测距

资源链接在文章最后,订阅查看获取全部内容及资料,如需可私信提供硬件。 目 录 1 绪论 2 1.1 项目研究背景及意义 2 2 总体设计方案及论证 2 2.1 总体方案设计 2 3 硬件实现及单元电路设计 3 3.1 主控制模块 3 3.2 电源设计 4 3.3 超声波测试模块 4 3.3.1 超声波的特性 5 3.3…

【Python】顺序、条件、循环语句

文章目录一. 顺序语句二. 条件语句1. 什么是条件语句2. 缩进和代码块3. 空语句 pass4. 练习三. 循环语句1. while 循环2. for 循环一. 顺序语句 默认情况下,Python 的代码执行顺序,是从上到下依次执行的: 执行结果一定为 “123”&#xff0…

【工具门户】Backstage配置使用PostgreSQL(三)

先决条件 If the database is not hosted on the same server as the Backstage app, the PostgreSQL port needs to be accessible (the default is 5432 or 5433) PostgreSQL数据库默认端口为5432或5433,如果数据库与Backstage应用不在同一台机器上,需开放PostgreSQL端口…

MyBatis框架一二级缓存含代码演示

目录 1.什么是缓存? 2. Mybatis的一级缓存 2.1实验一: 2.2实验二: 3.Mybatis的二级缓存 3.1 二级缓存需要配置才可以使用: 3.2 实验开始!! 4.总结 1.什么是缓存? 缓存就是数据交换的缓冲区(称作Cache),当某一…