当前位置: 首页 > news >正文

基于数据驱动的多尺度表示的信号去噪统计方法研究(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

文献来源:

 本文讲解一种数据驱动的信号去噪方法,该方法利用变分模态分解(VMD)算法和Cramer Von Misses(CVM)统计。与传统的经验模态分解(EMD)相比,VMD具有优越的数学和理论框架,使其对噪声和模态混合具有鲁棒性。 VMD的这些理想特性是通过将大部分噪声分离成几种最终模式来实现的,而大部分信号内容则分布在早期模式中。为了利用这种表示进行降噪,我们建议估计来自主要噪声模式的噪声分布,然后使用它来检测和抑制来自其余模式的噪声。该方法首先利用统计距离的CVM度量来选择主要噪声模式。接下来,在其余模式上局部使用 CVM 统计量来测试这些模式与估计噪声分布的拟合程度;与噪声分布产生更接近拟合的模式被拒绝(设置为零)。大量的实验证明了所提出的方法在信号去噪方面优于现有技术,并强调了其在噪声分布未知的实际应用中的实用性。

由于采集系统(例如录音系统、激光雷达系统、脑电图和心电图采集系统等)的各种物理限制,来自各种实际应用的信号会受到不必要的噪声的影响。因此,为了避免基于这些噪声信号做出任何错误的决定,有必要事先消除不需要的噪音。在这方面,通常假设时间序列数据中的噪声遵循加性白高斯噪声(wGn)模型。对于广义稳态信号,即具有完全已知的不变统计量的信号,使用Weiner滤波器,去除加性wGn的问题得到了最佳解决。但是,由于以下原因,这种方法在实际环境中可能不够。首先,大多数现实生活中的信号是非平稳的,因为它们的属性(统计数据)随时间变化。其次,假设的wGn模型可能并不总是用于表征时间序列数据中的噪声,例如EEG / ECG信号。因此,需要能够解释信号的非平稳性和噪声的非高斯性的更先进的技术。

离散小波变换(DWT)是一种处理非平稳信号的多尺度方法,其特性是信号奇异点在其系数内稀疏分布。另一方面,噪声系数具有较低的振幅和均匀的扩散[1]。这允许使用合适的阈值(例如,通用阈值[2])或统计收缩函数(例如[3],[4])来区分信号和噪声系数。这些方法的基础建立在关于(真实)信号和噪声的(分布)模型的先前假设之上。在这方面,数据采集和通信系统引起的随机噪声通常使用加性wGn模型进行建模,但这并不能完全考虑采集过程中导致噪声的因素。然而,由于时间序列数据中通常发现的信息具有任意性,因此指定信号模型具有挑战性。此外,先前模型的规范限制了这些方法在现实世界信号中的功效。

这个问题已经在[5]中提出的框架内得到了部分解决,该框架将DWT与拟合优度(GoF)检验相结合。此后,这种方法被称为DWT-GoF方法。值得一提的是,DWT-GoF方法只需要先验噪声模型。例如,在这里,噪声被方便地建模为零均值加性wGn。DWT保留了噪声的高斯性,有助于在多个小波尺度上检测wGn。这基本上需要检测和抑制拟合高斯分布的小波系数以进行去噪。此后,DWT-GoF方法[5]通过在多尺度系数上估计高斯分布的GoF来抑制来自DWT尺度的噪声。DWT-GoF方法的改进版本在[6],[7]中提出了,该方法采用GoF测试以及双树复小波变换(DTCWT),在续集中称为DT-GOF-NeighFilt方法。DT-GOF-NeighFilt方法的主要特点是结合一种新的邻域滤波技术,以最大限度地减少信号细节的损失,同时抑制噪声。除GoF检验外,其他假设检验工具,如错误发现率(FDR),贝叶斯局部错误发现率(BLFDR)也与小波变换结合使用,用于信号去噪[8]。

多尺度去噪的另一种途径涉及数据驱动的分解技术。例如,经验模式分解(EMD)[9]采用数据驱动的方法从信号中提取主要振荡模式。由于EMD能够将信号扩展为其固有的固有模式函数(IMF),EMD被认为非常适合处理实践中通常遇到的非平稳信号。当用于去噪时,EMD旨在检测代表(振荡)信号部分的IMF,并抑制与非振荡噪声相对应的IMF。小波启发的区间阈值函数用于检测来自噪声IMF的振荡信号部分[10]。具体来说,基于EMD的间隔阈值(EMD-IT)[10]旨在检测由两个连续的过零分开的振荡。这是通过将区间的极值与导致保留或拒绝整个区间的阈值进行比较来实现的。

[11]中的工作没有执行阈值,而是使用统计工具来检测相关(信号)模式,以便对去噪信号进行部分重建。然而,由于EMD的模式混合(即单个IMF中多个IMF的表现)特性及其对噪声和采样的敏感性,这些去噪方法可能会导致性能欠佳。从本质上讲,EMD框架内的上述缺点会导致噪声泄漏到一些信号模式中,从而导致噪声抑制,从而导致次优去噪。EMD缺乏数学基础限制了在其框架内纠正这些问题的机会。

最近提出的变分模态分解(VMD)基于变分问题的优化,以获得固定数量的带限IMF(BLIMF)的集合[12]。由于其良好的数学基础,VMD成功地避免了模式混合,并且与EMD不同,它对噪声和采样具有鲁棒性[12],[13]。从去噪的角度来看,VMD的一个非常重要的特性是它能够将所需信号分离成几个初始BLIMF,而噪声主要隐藏在几个最终BLIMF中。因此,通过抑制带噪声的模式,可以通过部分重建获得对真实信号的良好估计。

文献综述表明,现有的基于VMD的去噪方法通过将单个BLIMF的概率分布函数(PDF)与噪声信号的PDF进行比较来选择相关的信号模式。这是有根据的,因为分布函数通常反映噪声数据中存在的信号。BLIMF中存在的信号的估计可以通过测量其PDF与噪声信号的接近程度来获得,例如,通过使用欧几里得距离[14],巴塔查里亚距离[15]等。其中,统计上接近噪声信号的模式被选为相关(信号)模式,而大相径庭的模式则被排除为噪声。有关各种统计距离对估计相关模式的有效性的详细研究,请参阅感兴趣的读者[16]。此外,[17]中的方法使用去趋势波动分析(DFA)(最初在EMD-DFA方法[11]中与EMD一起使用)选择相关模式,该模式通过观察缺乏趋势来估计数据的随机性。这种方法,以下简称VMD-DFA [17],抑制噪声BLIMF,并根据其余模式重建去噪信号。

这些基于VMD的方法的问题在于(a)所选(低频)信号模式中存在噪声,导致去噪信号中出现明显伪影,以及(b)作为拒绝模式的一部分,高频信号细节丢失,导致不合格的去噪。这个问题没有得到研究人员的太多关注,这可能是因为与EMD/MEMD广泛使用的间隔阈值技术[10],[18],[19]由于噪声功率在BLIMF之间的任意分布,不能直接适用于VMD / MVMD模式。另一方面,为VMD的BLIMF设计类似小波的统计阈值技术需要事先了解噪声(和/或信号)的分布。这是具有挑战性的,因为VMD由于其非线性,将已知的噪声分布(例如,高斯分布)转换为未知的噪声分布。因此,阻碍了开发用于信号估计的统计方法的可能性。

📚2 运行结果

命令框输入任意一种,以4为例。

 

 

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

🌈4 Matlab代码实现

相关文章:

基于数据驱动的多尺度表示的信号去噪统计方法研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

【Golang】Golang进阶系列教程--Go 语言 map 如何顺序读取?

文章目录 前言现象原因如何顺序读取推荐阅读 前言 Go 语言中的 map 是一种非常强大的数据结构,它允许我们快速地存储和检索键值对。 然而,当我们遍历 map 时,会有一个有趣的现象,那就是输出的键值对顺序是不确定的。 现象 先看…...

伊语IM即时通讯源码/im商城系统/纯源码IM通讯系统安卓+IOS前端纯原生源码

伊语IM即时通讯源码/im商城系统/纯源码IM通讯系统安卓IOS前端纯原生源码, 后端是java源码。...

C++推理

YOLOv5 OpenCV DNN C导出的 ONNX 模型示例的推理: https://github.com/Hexmagic/ONNX-yolov5/blob/master/src/test.cpphttps://github.com/doleron/yolov5-opencv-cpp-python YOLOv5 OpenVINO C推理示例: GitHub - dacquaviva/yolov5-openvino-cpp-p…...

Day10-作业(SpringBootWeb案例)

作业1:完成课上预留给大家自己完成的功能 【部门管理的修改功能】 注意: 部门管理的修改功能,需要开发两个接口: 先开发根据ID查询部门信息的接口,该接口用户查询数据并展示 。(一定一定先做这个功能) 再开发根据ID…...

源码阅读:p-limit

源码阅读:p-limit 源码阅读:p-limit简介源码解读学习与收获 源码阅读:p-limit 简介 p-limit是一个用于限制并发操作的包,它可以控制同时执行的异步操作数量。它提供了一种简单的方式来管理并发操作,以避免系统资源过…...

目标检测-击穿黑夜的PE-YOLO

前言 当前的目标检测模型在许多基准数据集上取得了良好的结果,但在暗光条件下检测目标仍然是一个巨大的挑战。为了解决这个问题,作者提出了金字塔增强网络(PENet)并将其与YOLOv3结合,构建了一个名为PE-YOLO的暗光目标检…...

优化性能压力测试的关键策略和技巧

在现代软件开发中,性能压力测试是不可或缺的一环。它可以帮助开发团队评估系统在负载压力下的性能表现,识别潜在的性能瓶颈,并采取适当的措施进行优化。然而,仅仅进行性能压力测试是不够的,关键的在于如何优化测试的过…...

VMware Linux 可视化增加磁盘

1、VMware 增加磁盘 2、disks挂载磁盘 此处我挂载的是20G磁盘,截图只是用5G的做过程演示例子。 3、验证挂载磁盘...

从 axios 源码学习设计模式

文章目录 一、源码分析1.1 axios 为什么可以多种方式调用1.2 拦截器实现注册使用:promise链式调用 二、从 axios 看设计模式axios 的精髓在哪2.1 抽象工厂axios.create -- 创建新实例的工厂 2.2 微内核设计2.3 适配器思想2.4 责任链模式2.5 桥接模式举例&#xff1a…...

输出不同程序执行的时间

简单的测试工具代码,它可以输出不同程序执行的时间。我们可以使用Python的time模块来实现这个功能。 import timedef test_function(func, *args, **kwargs):"""测试函数执行时间的工具函数:param func: 待测试的函数:param *args: 函数的位置参数:…...

HDU 6391 组合数学 + DP

题意 传送门 HDU 6391 Lord Li’s problem 题解 仅考虑 S i ≠ T i S_i\neq T_i Si​Ti​ 的数量 m m m,最后答案除以 ( n m ) \binom{n}{m} (mn​) 即可。考虑 X X X 的排列,最后答案除以 k ! k! k! 即可。 d p [ i 1 ] [ j ] dp[i1][j] dp[…...

StopWatch与ThreadLocal

目录 1、StopWatch 1、1作用: 1、2方法: 1、3使用方法 2、ThreadLocal 2、1什么是ThreadLocal 2、2简单例子 2、3使用ThreadLocal带来的四个好处 2、4主要方法 2、5ThreadLocal内存泄漏问题 1、StopWatch 1、1作用: 统计代码块耗时时…...

20. 有效的括号

给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括…...

微信小程序原生写法传递参数

微信小程序原生写法传递参数 data-xxx 自定义参数名 ,接收参数:方法(变量名) checkVip:function(event) {let that thisconsole.log(event,event)console.log(event.currentTarget.dataset.idx,index)let index Number(eve…...

JavaWeb+jsp+Tomcat的教务查询系统

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88134601?spm1001.2014.3001.5503 jsp/tomcat7.05/MySQL5.7或8版本/ssm框架/spring/ Web框架:SpringBoot/ORM框架:Mybatis/安全框架:Shiro/分页插件&am…...

C# FTP下载 采用Ssh.Net方式

不要再用FTPClient了 nuget下载Ssh.Net 然后代码如下&#xff1a; /// <summary>/// SFTP操作类/// </summary>public class SFTPHelper{#region 字段或属性private SftpClient sftp;/// <summary>/// SFTP连接状态/// </summary>public bool Conne…...

【C++】做一个飞机空战小游戏(三)——模块化程序设计

[导读]本系列博文内容链接如下&#xff1a; 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动【C】做一个飞机空战小游戏(三)——模块化程设设计 在前两讲当中&#xff0c;介绍了利用…...

Django使用WebSocket

1、websocket 相关 实现一个系统&#xff0c;20 个用户同时打开网站&#xff0c;呈现出来一个群聊界面 解决方案 轮询&#xff1a;让浏览器每隔2s向后台发送一次请求&#xff0c;缺点&#xff1a;延迟&#xff0c;请求太多网站压力大 长轮询&#xff1a;客户端向服务端发送请…...

看完这篇 教你玩转渗透测试靶机Vulnhub——HarryPotter:Nagini

Vulnhub靶机HarryPotter:Nagini渗透测试详解 Vulnhub靶机介绍&#xff1a;Vulnhub靶机下载&#xff1a;Vulnhub靶机安装&#xff1a;Vulnhub靶机漏洞详解&#xff1a;①&#xff1a;信息收集&#xff1a;②&#xff1a;漏洞发现&#xff1a;③&#xff1a;SSRF漏洞利用&#xf…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...