CEEMDAN算法及其应用

2023-11-08

目录

前言

一、CEEMDAN 算法

1 算法原理

2 MATLAB程序

二、CEEMDAN 算法的应用 

1 CEEMDAN—小波阈值联合去噪

2 CEEMDAN—小波包分析降噪

3 CEEMDAN—时频峰值滤波

结束语

参考文献


前言

针对EMD算法分解信号存在模态混叠的问题,EEMD和CEEMD分解算法通过在待分解信号中加入成对正负高斯白噪声来减轻EMD分解的模态混叠。但是这两种算法分解信号得到的本征模态分量中总会残留一定的白噪声,影响后续信号的分析和处理。

为了解决这些问题,TORRES 等提出了一种改进算法——完全自适应噪声集合经验模态分解(Complete EEMD with Adaptive Noise,CEEMDAN),又称完全集合经验模态分解。

CEEMDAN 分解从两个方面解决了上述问题:1)加入经 EMD 分解后含辅助噪声的 IMF 分量,而不是将高斯白噪声信号直接添加在原始信号中;2) EEMD 分解和 CEEMD 分解是将经验模态分解后得到的模态分量进行总体平均,CEEMDAN 分解则在得到的第一阶 IMF分量后就进行总体平均计算,得到最终的第一阶 IMF分量,然后对残余部分重复进行如上操作,这样便有效地解决了白噪声从高频到低频的转移传递问题。

一、CEEMDAN 算法

1 算法原理

E_{i}(\cdot)为经过 EMD 分解后得到的第 i个本征模态分量,CEEMDAN 分解得到的第 i 个本征模态分量为\overline{C_{i}(t)}v^{j}为满足标准正态分布的高斯白噪声信号,j=1,2,...,N.为加入白噪声的次数,\varepsilon为白噪声的标准表,y(t)为待分解信号。CEEMDAN 分解步骤如下:

1)将高斯白噪声加入到待分解信号y(t)得到新信号y(t)+(-1)^{^{q}}\varepsilon v^{j}(t),其中q=1,2. 对新信号进行EMD分解,得到第一阶本征模态分量C_{1}

E(y(t)+(-1)^{^{q}}\varepsilon v^{j}(t))=C_{1}^{j}(t)+r^{j}

2)对产生的 N 个模态分量进行总体平均就得到CEEMDAN 分解的第 1个本征模态分量:

\overline{C_{1}(t)}=\frac{1}{N}\sum_{j=1}^{N}C_{1}^{j}(t)

3)计算去除第一个模态分量后的残差:

r_{1}(t)=y(t)-\overline{C_{1}(t)}

4)在 r_{1}(t)中加入正负成对高斯白噪声得到新信号,以新信号为载体进行 EMD 分解,得到第一阶模态分量D_{1},由此可以得到 CEEMDAN 分解的第 2个本征模态分量:

\overline{C_{2}(t)}=\frac{1}{N}\sum_{j=1}^{N}D_{1}^{j}(t)

5)计算去除第二个模态分量后的残差:

r_{2}(t)=r_{1}(t)-\overline{C_{2}(t)}

6)重复上述步骤,直到获得的残差信号为单调函数,不能继续分解,算法结束。此时得到的本征模态分量数量为 K,则原始信号y(t)被分解为:

y(t)=\sum_{k=1}^{K}\overline{C_{k}(t)}+r_{k}(t)

2 MATLAB程序

clc;
clear;
close all;

fs=4000;   % 采样频率为4000Hz
t=(0:1/fs:(2-1/fs))';
N=length(t);
x1=0.25*cos(0.875*pi*50*t);
x2=0.3*sin(2*pi*50*t).*(1+1.5*sin(0.5*pi*40*t));
x3=0.15*exp(-15*t).*sin(200*pi*t);
x=x1+x2+x3;
nt=0.2*randn(N,1);
y=x+nt;

%% CEEMDAN分解
Nstd = 0.2;                % 高斯白噪声标准差,一般选择0-1
NR = 100;                  % 加入噪声的次数,一般选择50-100
MaxIter = 500;            % 最大迭代次数
[imf, its]=ceemdan(y,Nstd,NR,MaxIter);
[m, n]=size(imf);
CC=zeros(1,m);  % 相关系数
figure;
for i=1:m
    subplot(m/2,2,i);plot(imf(i,:));ylabel(['IMF',num2str(i)]);
    CC(i)=corr(imf(i,:)',y,'type','Pearson');   % 相关系数
end
CEEMDAN分解的各个IMF分量
CEEMDAN分解的各个IMF分量与待分解信号y(t)的相关系数
IMF1 IMF2 IMF3 IMF4 IMF5 IMF6 IMF7
0.3702 0.2354

0.2431

0.2012

0.1793 0.7528 0.7492
IMF8 IMF9 IMF10 IMF11 IMF12 IMF13 IMF14
0.4566 0.0687 0.0287 0.0174 -0.0029 0.0111 0.0028

二、CEEMDAN 算法的应用 

利用CEEMDAN算法分解含噪声信号时,若将含噪声较多的 IMF分量直接舍弃,容易造成有效信息的缺失,因此,需要采用其他去噪方法对含噪声较多的高频 IMF分量进行去噪处理,最后将去噪后的 IMF分量和未去噪处理的 IMF分量进行重构,从而得到去噪后的信号。

1 CEEMDAN—小波阈值联合去噪

论文复现:CEEMDAN-小波阈值联合的球磨机筒体振动信号去噪方法研究。

首先运用 CEEMDAN 算法将信号分解成一系列 IMF 分量; 其次采用连续均方误差准则确定含噪声较多的高频 IMF 分量; 然后采用小波阈值去噪方法对含噪声较多的高频 IMF 分量进行去噪处理; 最后将去噪处理的 IMF 分量和未去噪处理的 IMF 分量进行重构,获得联合去噪方法去噪后的信号。

MATLAB代码链接:CEEMDAN—小波阈值联合去噪

2 CEEMDAN—小波包分析降噪

论文复现:基于 CEEMDAN -小波包分析的隧道爆破信号去噪方法。

首先,通过 CEEMDAN 分解得到多个本征模态分量,利用相关系数筛选出包含噪声的模态分量,并通过模态分量的频谱图及方差贡献率进行校核。然后,利用小波包阈值降噪方法对含有噪声的模态分量进行处理。最后,将未经处理的模态分量与去噪完成的模态分量进行重构,得到最终纯净的爆破振动信号。同时,通过小波包能量谱分析验证此降噪方法的可行性。

MATLAB代码链接:CEEMDAN—小波包分析降噪

3 CEEMDAN—时频峰值滤波

论文复现:基于 CEEMDAN 的时频峰值滤波微地震随机噪声压制方法。

原始微地震数据经 CEEMDAN 分解为若干个本征模态分量 IMF;通过计算 IMF 的样本熵将 IMF 划分为需滤波和存留的两个组分,对需 TFPF 滤波的 IMF 分量逐一选择时窗长度进行滤波;将处理后的 IMF 与不需处理的 IMF 重构即可得到最终的滤波信号。

MATLAB代码链接:

结束语

大家的点赞和关注是博主最大的动力,博主所有博文中的代码文件都可分享给您(除了少量付费资源),如果您想要获取博文中的完整代码文件,可通过C币或积分下载,没有C币或积分的朋友可在关注、点赞和评论博文后,私信发送您的邮箱,我会在第一时间发送给您。博主后面会有更多的分享,敬请关注哦!

参考文献

[1] TORRES M E, COLOMINAS M A, SCHLOTTHAUER G, et al. A complete ensemble empirical mode decomposition with adaptive noise[C] // IEEE International Conference on Acoustics, Speech and Signal Processing, IEEE, 2011 :4144-4147.

[2] 蔡改贫, 赵小涛, 胡显能, 等. CEEMDAN-小波阈值联合的球磨机筒体振动信号去噪方法研究[J]. 机械科学与技术, 2020, 39(7) : 1077-1085.

[3] 王海龙,赵岩,王海军,彭婵媛,仝潇.基于 CEEMDAN -小波包分析的隧道爆破信号去噪方法.爆炸与冲击.(网络首发)

[4] 陈毅军,程 浩,巩恩普,等. 基于 CEEMDAN 的时频峰值滤波微地震随机噪声压制方法[J]. 石油地球物理勘探,2021,56(2):234-241.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CEEMDAN算法及其应用 的相关文章

  • 如何从绘图处理程序中绘图?

    我有绘图的处理程序或图形的处理程序 例子 h plot 1 0 2 10 xx get h xx DisplayName Annotation 1x1 handle Color 0 0 1 LineStyle LineWidth 0 500
  • 频域和空间域的汉明滤波器

    我想通过在 MATLAB 中应用汉明滤波器来消除一维信号中的吉布斯伪影 我所拥有的是k1这是频域中的信号 我可以通过应用 DFT 来获取时域信号k1 s1 ifft ifftshift k1 该信号具有吉布斯伪影 现在 我想通过 A 乘以汉
  • 单元格的 Fieldnames 函数的等效项

    正如标题所说 只是想知道是否有一个函数可以用作字段名 http www mathworks co uk help matlab ref fieldnames html 但适用于单元格 所以如果我有类似的东西 a imread redsqua
  • 如何加载具有可变文件名的 .mat 文件?

    select all mat files oar dir oar mat n oar name loop through files for l 1 length oar load pat oar l lt this is the mat
  • 如何每次使用按钮将数据添加到 MATLAB 中的现有 XLSX 文件?

    我有一个函数可以生成一些变量 例如分数 对 错 未回答 使用按钮调用此功能 问题是如何每次将函数生成的这些值添加 附加到 XLSX 文件中 或者 如何创建 MAT 文件以便可以添加它 可能的解决方案是什么 附加到 xls 文件所涉及的挑战是
  • 如何获取MATLAB句柄对象的ID?

    当我尝试使用时出现问题MATLAB 句柄对象 http www mathworks com help techdoc ref handle html作为关键值MATLAB 容器 Map http www mathworks com help
  • matlab部署工具到java包javac错误

    我正在尝试将我的程序包装为与 java 一起使用 我首先尝试了一个简单的 hello world 你好世界 m disp 你好世界 我使用了deploytool并选择了java包 当它到达这一行时 执行命令 javac verbose cl
  • 从筛查乳腺 X 光检查数字数据库 (DDSM) 获取数据

    我正在尝试以可读格式获取 DDSM 数据集 有谁有 DDSM heathusf 程序的工作版本 可以在 Linux 或 Windows 上正常运行吗 我知道 DDSM 的 jpeg 程序有一个适用于 linux 的工作版本 位于http w
  • 在Matlab中对字符进行分组并形成矩阵

    我有 26 个字符 A 到 Z 我将 4 个字符组合在一起 并用空格分隔以下 4 个字符 如下所示 abcd efgh ijkl mnop qrst uvwx yz 我的Matlab编码如下 str abcdefghijklmnopqrst
  • Matlab 一个图上有多个图例 2014b

    我想在一个地块上有多个传说 该解决方案在 2014b 版本之前完美运行 我试图弄清楚如何使用手柄优雅地制作它 但到目前为止还没有成功 欢迎任何想法 2013b 的示例 x 1 50 y1 sin x 2 y2 cos x 2 f figur
  • 如何正确从表中删除 NaN 值

    在 Matlab 中阅读 Excel 电子表格后 不幸的是 我的结果表中包含了 NaN 例如这个 Excel 表格 将产生此表 其中出现额外的 NaN 列 我尝试使用以下代码片段删除 NaN measurementCells readtab
  • Matlab的导入函数的范围是什么?

    我正在尝试将一些用 Matlab 编写的代码转换为独立的 编译的 Matlab 应用程序 然而 在出现一些奇怪的错误之后 我意识到代码大量使用了从路径中添加和删除的操作 以避免多次使用多个具有相同名称 但结果 计算不同 的函数这一事实 环顾
  • matlab中无限while嵌套在for循环中

    我想做一个while循环 嵌套在for在 Matlab 中循环以查找数据中不同对之间的距离 我的数据具有以下形式 ID lon lat time 1 33 56 40 89 803 2 32 45 41 03 803 3 35 78 39
  • Matlab:3D 堆积条形图

    我正在尝试创建一个 3D 堆积条形图 如这个问题所示 Matlab 中的 3D 堆叠条形图 https stackoverflow com questions 13156133 3d stacked bars in matlab 5D 然而
  • 如何在 MATLAB 编译的应用程序中运行外部 .m 代码? [复制]

    这个问题在这里已经有答案了 我有一个 MATLAB 项目 我使用 MCC 对其进行编译以获得单个可执行文件 然后我想知道外部程序员是否可以在 exe 中执行他的一些 m 文件 而无需重新编译整个项目 重点是提供一个应用程序 其他开发人员可以
  • 通过多次合并相同的行向量来构建矩阵

    有没有一个matlab函数可以让我执行以下操作 x 1 2 2 3 然后基于x我想建立矩阵m 1 2 2 3 1 2 2 3 1 2 2 3 1 2 2 3 您正在寻找REPMAT http www mathworks com help t
  • 通过 cuFFT 进行逆 FFT 缩放

    每当我使用 cuFFT 绘制程序获得的值并将结果与 Matlab 的结果进行比较时 我都会得到相同形状的图形 并且最大值和最小值位于相同的点 然而 cuFFT 得到的值比 Matlab 得到的值大得多 Matlab代码是 fs 1000 s
  • MATLAB - 通过垂直连接子矩阵重新排列矩阵

    我在执行以下任务时遇到问题 假设一个 3x6 矩阵 A 0 2787 0 2948 0 4635 0 8388 0 0627 0 0435 0 6917 0 1185 0 3660 0 1867 0 2383 0 7577 0 6179 0
  • 将向量(或弧)绘制到玫瑰图上。 MATLAB

    我有两个数据集 其中详细列出了angles 我正在绘制玫瑰图 angles 0 8481065519 0 0367932161 2 6273740453 n 另一个 从这组角度详细说明方向统计 angle error 0 848106563
  • 如何选择面积最大的对象?

    我用过bwconvhull检测图像的某个部分 正如您在图像中看到的那样 有许多具有特定质心的对象 我想做的是检测面积最大的物体 左起第一个大物体 并忽略其他物体 我应该遵循哪种方法 我将非常感谢您的帮助 以下是代码 由于我仍在努力 所以写得

随机推荐

  • DBA_Oracle Table Partition表分区概念汇总(概念)

    一 摘要 有关表分区的一些维护性操作 注 分区根据具体情况选择 表分区有以下优点 1 数据查询 数据被存储到多个文件上 减少了I O负载 查询速度提高 2 数据修剪 保存历史数据非常的理想 3 备份 将大表的数据分成多个文件 方便备份和恢复
  • MySQL5.7保姆级安装教程

    环境 Linux版本 Mysql版本 待安装 CentOS 7 5 7 1 配置YUM源 在MySQL官网中下载YUM源rpm安装包 http dev mysql com downloads repo yum 目前MySQL官网下载的MyS
  • C++ 的string类学习

    一 string类型变量构造赋值方法 1 构造 1 用等号直接赋值S0 2 定义一个空白变量S1 3 定义一个新变量S2 内容完全等于S0 4 定义一个新变量S3 内容是S0从第八个字符开始的三个字符 5 定义一个新变量S4 用括号赋值 和
  • Python并发编程之线程池/进程池

    转载 http python jobbole com 87272 引言 Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程 多进程代码 但是当项目达到一定的规模 频繁创建 销毁进程或者线程是
  • 任意宽度灰度BMP图像读写 V1

    一般BMP图像读写程序只能正确读写宽度为4的倍数的图像 而在图像处理领域所用到的图像宽度不一定满足4的倍数 我在一般BMP图像读写程序基础上进行了改进 使得程序可以读写任意宽度的灰度BMP图像 特分享给大家 希望能够给大家带来帮助 头文件
  • mysql版本5.5.*升级为5.7.*,遇到的问题和解决方法都来看看吧,最终升级成功~

    背景 由于项目比较老 用的数据库版本也是相当低 现在业务需求需要做数据同步 使用FlinkCDC的时候报数据库版本低 查询FlinkCDC要求的最低版本后果断升级mysql FlinkCDC对mysql最低版要求如下图 从 2 2 版本开始
  • 大疆云台和华为P30_超全,一篇文章搞清楚大疆Osmo三款产品区别!

    超全 一篇文章搞清楚大疆Osmo三款产品区别 2020 06 06 17 23 07 33点赞 179收藏 13评论 先说结论吧 Mobile 3适合日常用手机作为主力拍摄工具的人群 手机的拍摄能力以及符合你对画面的要求 另外你还可以接受每
  • code runner 中文使用指南

    Code Runner 用法 运行代码 使用快捷键 Ctrl Alt N 按F1然后选择 键入 Run Code 右键单击文本编辑器 然后在编辑器上下文菜单中单击 Run Code 命令 单击编辑器标题菜单中的 Run Code 按钮 单击
  • 车载毫米波雷达信号处理中的模糊问题仿真分析

    车载毫米波雷达信号处理中的模糊问题仿真分析 概述 车载毫米波雷达在现代汽车领域中扮演着重要的角色 用于实现自动驾驶 智能巡航控制和碰撞警报等功能 然而 在车载毫米波雷达信号处理中 存在各种模糊问题 这些问题可能会影响雷达系统的性能和准确性
  • MySQL数据库之DCL命令

    一 DCL命令 GRANT 授予访问权限 REVOKE 撤销访问权限 COMMIT 提交事务处理 ROLLBACK 事务处理回退 SAVEPOINT 设置保存点 LOCK 对数据库的特定部分进行锁定 查看用户权限 SHOW GRANTS F
  • vue学习笔记(三)

    1 vue开发存在SEO问题 前端开发采用vue开发后是单页面 单页面里面 前后端分离 渲染过程是js写的 在js调用接口返回数据之前 页面已经被打开了 实际上就是空白页面 这个时候右键点击查看源代码 实际上是都看不到内容的 对SEO不太有
  • 什么是节点光端机?总线型光端机有哪些优势?

    节点式光端机又称总线型光端机 其准确的定义是采用单 双纤链路式组网形式的图像传输系统 也被称为链路式光端机 那么 节点式光端机具体是什么呢 总线型光端机又有哪些优势呢 接下来我们就跟随飞畅科技的小编一起来详细了解下吧 什么是节点光端机 节点
  • Android动画+自定义Dialog实现闲鱼发布页面动态效果

    先来看一下效果图 一 新建一个项目DialogView 在layout文件夹下创建一个anmi的文件夹用于存放动画资源 1 首先创建进入Dialog和关闭Dialog时候的主题背景动画 进入Dialog时的动画 main go in xml
  • Ubuntu18 安装ssh

    1 安装ssh 在终端输入命令 sudo apt get install openssh server 2 查看SSH服务是否启动 输入命令 sudo ps e grep ssh
  • LRU算法

    http blog csdn net Ackarlix article details 1759793 http www cnblogs com changweihua archive 2012 05 13 2497903 html 文章一
  • STM32中栈、堆、全局区、常量区、代码区、RAM、ROM的分析

    STM32中栈 堆 全局区 常量区 代码区 RAM ROM的分析 1 堆 栈区 STM32中堆栈是为了存储不同信息而开辟的空间 具体对应于启动文件中的head和stack所定义的内存空间 STM32中 堆向高地址增长 栈向低地址增长 堆 是
  • 探索学习Qt

    探索学习Qt 版本说明 版本 作者 日期 备注 0 2 loon 2018 10 26 新增部分说明内容及总结计划 目录 文章目录 探索学习Qt 版本说明 目录 一 目的 二 Qt是什么 三 Qt示例和教程 1 探索Qt creator 2
  • 安装依赖时报错:npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving

    F study heima vueCode demo3 gt npm i axios S npm ERR code ERESOLVE npm ERR ERESOLVE could not resolve npm ERR npm ERR Wh
  • VR丨有哪些靠谱的VR开发工具之引擎篇

    转载 http www uisdc com vr tools design engine C7210 靠谱的工具都有哪些 在不同的学习阶段又该怎样进行合理的选择 本文将聚焦于这两个问题向你介绍一系列主流设计开发工具 包括引擎 3D建模 2D
  • CEEMDAN算法及其应用

    目录 前言 一 CEEMDAN 算法 1 算法原理 2 MATLAB程序 二 CEEMDAN 算法的应用 1 CEEMDAN 小波阈值联合去噪 2 CEEMDAN 小波包分析降噪 3 CEEMDAN 时频峰值滤波 结束语 参考文献 前言 针