类EMD的“信号分解方法”及MATLAB实现(第三篇)——CEEMDAN

2023-11-04

来帮忙填坑了。

今天接着之前讲过的EEMDCEEMD,来介绍一下“类EMD”分解方法的第三篇。

1. CEEMDAN(自适应噪声完备集合经验模态分解)的概念

CEEMDAN[1](Complete Ensemble Empirical Mode Decomposition with Adaptive Noise)的中文名称是自适应噪声完备集合经验模态分解,要注意这个方法并不是在CEEMD方法上改进而来的,而是从EMD的基础上加以改进,同时借用了EEMD方法中加入高斯噪声和通过多次叠加并平均以抵消噪声的思想。

在试图理解CEEMDAN算法流程之前,强烈建议先搞清楚EEMD算法的流程,然后对比一下EEMD和CEEMDAN的算法流程。请仔细对照下边两张流程图:

EEMD分解方法流程图

CEEMDAN方法流程图

流程图展示地很清楚了,简单地描述EEMD与CEEMDAN的区别大概是:

EEMD方法是将添加白噪声后的M个信号直接做EMD分解,然后相对应的IMF间直接求均值;

CEEMDAN方法是每求完一阶IMF分量,又重新给残值加入白噪声(或白噪声的IMF分量)并求此时的IMF分量均值,并逐次迭代。

点明几个需要注意的地方:

1.如果最终rk也算一个IMF分量的话,上图总共分解出了K+1个IMF分量;
2.图中Ek​(∗)为利用EMD算法产生的第k阶IMF分量,所以每次迭代添加都是最初始的那些白噪声的IMF分量(第一次迭代添加的是原始白噪声)。
3.上述流程图的理论依据是[1],加入白噪声部分的方法可能会与其他论文乃至代码不同(这些方法中第一次迭代添加的是白噪声的第1阶分量,依次类推),不过鉴于论文[1]是方法提出者所写,故采用。

CEEMDAN作为EEMD方法的改进型,它的优势主要体现在以下几个方面[1]

1.完备性,即把分解后的各个分量相加能够获得原信号的性质。CEEMDAN在较小的平均次数下就可以有很好的完备性;而对于EEMD方法,较小的平均次数会导致较差的完备性,也即CEEMD那篇文章里提到的重构误差会很大。
2.更快的计算速度,正是由于上一条,相较于EEMD该方法不需要太多的平均次数,可以有效提升程序运算速度。
3.更好的模态分解结果,EEMD分解可能会出现多个幅值很小的低频IMF分量,这些分量对于信号分析意义不大,CEEMDAN方法可以减少这些分量数目。

2. CEEMDAN的编程实现

该方法的代码在网上是可以找到的[2],不过鉴于专栏前期将“类EMD”方法的代码做了统一格式的封装,提升了调用格式的延续性和代码易用性,实现便捷画图,所以这次也对CEEMDAN的代码做了类似处理。封装后的函数有两个。

测试信号同样使用前两篇文章中的正弦信号与间断性高频脉冲合成的信号:

%% 1.生成仿真信号
fs = 400;  %采样频率
t = 0:1/fs:0.75; %时间轴
x = sin(2*pi*4*t); %低频正弦信号
y = 0.5*sin(2*pi*120*t); %高频正弦信号
for i = 1:length(t) %将高频信号处理成间断性
    if mod(t(i),0.25)>0.11&&mod(t(i),0.25)<0.12
    else
        y(i) = 0;
    end
end
sig = x+y; %信号叠加
figure('color','white')
plot(t,sig,'k') %绘制原始信号

混合信号

(一)时域分解图

function imf = pCEEMDAN(data,FsOrT,Nstd,NE,MaxIter)
% 画信号CEEMDAN分解图
% 输入:
% data为待分解信号
% FsOrT为采样频率或采样时间向量,如果为采样频率,该变量输入单个值;如果为时间向量,该变量为与y相同长度的一维向量。如果未知采样频率,可设置为1
% Nstd为附加噪声标准差与Y标准差之比
% NE为对信号的平均次数
% MaxIter:最大筛选迭代次数
% 输出:
% imf为经CEEMDAN分解后的各imf分量值
% 例1:(FsOrT为采样频率)
% fs = 100;
% t = 1/fs:1/fs:1;
% data = sin(2*pi*5*t)+2*sin(2*pi*20*t);
% imf = pCEEMDAN(data,fs,0.2,100);
% 例2:(FsOrT为时间向量,需要注意此时FsOrT的长度要与y相同)
% t = 0:0.01:1;
% data = sin(2*pi*5*t)+2*sin(2*pi*20*t);
% imf = pCEEMDAN(data,t,0.2,100);

画出的图是这样的:

(二)时域分解图及对应频谱图

function imf = pCEEMDANandFFT(y,FsOrT,Nstd,NE,MaxIter)
% 画信号CEEMDAN分解与各IMF分量频谱对照图
% 输入:
% y为待分解信号
% FsOrT为采样频率或采样时间向量,如果为采样频率,该变量输入单个值;如果为时间向量,该变量为与y相同长度的一维向量
% Nstd为附加噪声标准差与Y标准差之比
% NE为对信号的平均次数
% MaxIter:最大筛选迭代次数
% 输出:
% imf为经CEEMDAN分解后的各imf分量值
% 例1:(FsOrT为采样频率)
% fs = 100;
% t = 1/fs:1/fs:1;
% y = sin(2*pi*5*t)+2*sin(2*pi*20*t);
% imf = pCEEMDANandFFT(y,fs,0.2,100);
% 例2:(FsOrT为时间向量,需要注意此时FsOrT的长度要与y相同)
% t = 0:0.01:1;
% y = sin(2*pi*5*t)+2*sin(2*pi*20*t);
% imf = pCEEMDANandFFT(y,t,0.2,100);

画出的图是这样的:

上边的测试代码和封装函数,包括工具箱都可以在下边链接中获取:

CEEMDAN画图工具(公开版) | 工具箱文档

EMD、EEMD、CEEMD以及HHT相关的程序也有,编程不易,感谢支持~关于EMD、EEMD和HHT的相关介绍可以看这里:

Mr.括号:这篇文章能让你明白经验模态分解(EMD)——EMD在MATLAB中的实现方法

Mr.括号:希尔伯特谱、边际谱、包络谱、瞬时频率/幅值/相位——Hilbert分析衍生方法及MATLAB实现

Mr.括号:类EMD的“信号分解方法”及MATLAB实现(第一篇)——EEMD

Mr.括号:类EMD的“信号分解方法”及MATLAB实现(第二篇)——CEEMD

3. 更多

后续还会逐渐补充VMD以及小波分解、小波包分解、SWT、EWT等等“信号分解方法”,把这一系列做的尽量全面一些。有其他想让博主补充的也可以在评论区留言,合适的话会一起加入该系列豪华大餐哦~

参考

  1. ^ab Mar´ıa E. Torres ★, Marcelo A. Colominas ★, Gasto´n Schlotthauer ★, et al. A complete ensemble empirical mode decomposition with adaptive noise[C]// IEEE International Conference on Acoustics. IEEE, 2011.
  2. ^http://bioingenieria.edu.ar/grupos/ldnlys/metorres/re_inter.htm
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类EMD的“信号分解方法”及MATLAB实现(第三篇)——CEEMDAN 的相关文章

  • python 绘制 频谱图

    效果图 t np arange 0 time 1 0 sampling rate wavename morl cmorB C where B is the bandwidth and C is the center frequency to
  • 记录 Libevent的常用功能示例

    介绍 Libevent是开源社区一款高性能的I O框架库 是reactor模式的优秀体现 网上相关资料很多 这篇博文主要以尽量简练的代码实现TcpServer服务器功能 代码覆盖大部分的常用函数接口 通过代码能对Libevent的整体框架
  • 低通、高通、带通、阻通滤波器

    目录 低通 高通 带通 阻通滤波器 低通 高通 带通 带阻滤波器的区别 通俗理解 1 低通滤波器 2 高通滤波器 3 带通滤波器 4 带阻滤波器 5 全通滤波器 低通 高通 带通 阻通滤波器 低通 高通 带通 带阻滤波器的区别 低通滤波器
  • 【数字信号处理2】IIR 滤波器设计

    一 实验目的 1 掌握冲激响应法和双线性变换法设计IIR滤波器的原理及具体设计方法 熟悉用双线性设计法设计低通 带通和高通IIR数字滤波器的计算机程序 2 熟悉模拟Butterworth滤波器的设计 掌握冲激响应法和双线性变换法设计数字II
  • 【Linux:进程间信号】

    文章目录 1 生活角度的信号 2 技术应用角度的信号 3 信号的产生 3 1 由系统调用向进程发信号 3 1 1 signal 3 1 2 kill 3 1 3 raise 3 2 由软件条件产生信号 3 3 硬件异常产生信号 3 4 通过
  • 基于空间平滑MUSIC算法的相干信号DOA估计(2)

    空间平滑MUSIC算法 2 继续上一篇博客 继续讲后向空间平滑和前 后向空间平滑MUSIC算法 基于空间平滑MUSIC算法的相干信号DOA估计 1 2 3 后向空间平滑算法 后向空间平滑更准确的说是共轭后向空间平滑 它是对后向子阵列地共轭接
  • c++ 实现信号和槽机制

    主要通过 c 实现类型QT 信号和槽的问题 设计思路 1 利于模板函数和模板类的 通用性 2 BInd的时候 讲槽函数指针保存 触发时调用 代码如下 include
  • FPGA结构分析——IDDR,网口储备点1

    先抛出几个问题 1 什么是 IDDR IDDR的作用是什么 使用场景 2 IDDR结构是什么样 都有哪些端口 端口属性都是什么 3 IDDR原语结构 参数属性说明 4 IDDR时序是什么样 1 什么是 IDDR IDDR的作用是什么 使用场
  • PyEMD安装及简单使用

    0 安装 命令pip install PyEMD存在问题 不建议使用 若用此命令安装 会报以下错误 Looking in indexes http pypi doubanio com simple http mirrors aliyun c
  • 王道考研计算机网络第二章--物理层

    目录 2 1通信基础 2 1 1物理层基本概念 1物理层基本概念 2 1 2数据通信基础知识 1典型的数据通信模型 2数据通信相关术语 3三种通信方式 4两种数据传输方式 2 1 3码元 波特 速率 带宽 1码元 2速率 波特 带宽 2 1
  • 视频码率(Bitrate),帧率(FPS)和分辨率的联系与区别

    一 视频码率 码率就是数据传输时单位时间传送的数据位数 一般我们用的单位是kbps即千位每秒 也就是取样率 并不等同与采样率 采样率的单位是Hz 表示每秒采样的次数 单位时间内取样率越大 精度就越高 处理出来的文件就越接近原始文件 但是文件
  • 曼彻斯特编码/差分曼彻斯特编码

    1 曼彻斯特编码 Manchester Encoding 位中间电平从低到高跳变表示 0 位中间电平从高到低跳变表示 1 2 差分曼彻斯特编码 differential Manchester encoding 在最初信号的时候 即第一个信号
  • 语音特征公式与python实现

    参考pyAudioAnalysis openSmile以及语音信号处理实验教程 MATLAB源代码 Introduction to Audio Analysis A Matlab Approach 完整测试文件 注意 以下代码不在genFe
  • 单边带(SSB)调制技术

    文章目录 单边带 SSB 调制技术 1 双边带简述 2 单边带调制 单边带 SSB 调制技术 1 双边带简述 首先简述一下双边带调制 所谓双边带 DSB double sideband 调制 本质上就是调幅 时域上将基带信号x t 和高频载
  • 为不同的调制方案设计一个单载波系统(映射器-信道-去映射器)(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 本代码为不同的调制方案 BPSK QPSK
  • 分段线性插值

    N 10 定义插值节点的个数 x 5 10 N 5 依据课本xi 5 i h i 0 1 N h 10 N y x 1 x 4 依据课本 1 插值公式 xi 5 0 25 5 依据课本xk 5 0 25k k 0 1 40 m length
  • IQ调制的过程

    正交调制 IQ modulation IQ调制器的相移器原理 正交调制数学表达和图形化过程i显示 关键元素都在里面 普通调制的过程 PAM调制的原理 IQ modulators are versatile building blocks f
  • 小波变换详解

    小波变换详解 1 简介 We can use the Fourier Transform to transform a signal from its time domain to its frequency domain The peak
  • 【FMC141】基于VITA57.4标准的4通道2.8GSPS 16位DA播放子卡(2片DAC39J84)

    FMC141是一款基于VITA57 4标准的4通道2 8GSPS 2 5GSPS 1 6GSPS采样率16位DA播放FMC子卡 该板卡为FMC 标准 符合VITA57 4与VITA57 1规范 16通道的JESD204B接口通过FMC 连接
  • EMD+包络谱故障诊断

    EMD是一种信号处理方法 用于将信号分解成多个本征模态函数 Intrinsic Mode Functions IMF 每个IMF代表信号中的一个固有振动模式 VMD在处理非平稳信号和非线性信号方面具有较好的性能 包络谱峭度是一种用于描述信号

随机推荐

  • MongoDB Replica Sets + Sharding 实战

    一 Replica Sets 复制集 MongoDB 支持在多个机器中通过异步复制达到故障转移和实现冗余 多机器中同一时刻只有一台是用于写操作 正是由于这个情况 为 MongoDB 提供了数据一致性的保障 担当Primary 角色的机器能把
  • image点击事件

    self headImage userInteractionEnabled YES UITapGestureRecognizer singleTap1 UITapGestureRecognizer alloc initWithTarget
  • 实验八 模板

    一 实验目的和要求 1 能够使用C 模板机制定义重载函数 2 能够实例化及使用模板函数 3 能够实例化和使用模板类 4 应用标准C 模板库 STL 通用算法和函数对象实现查找和排序 二 实验内容 1 分析并调试下列程序 了解函数模板的使用
  • GJM : 【技术干货】给The Lab Renderer for Unity中地形添加阴影

    感谢您的阅读 喜欢的 有用的就请大哥大嫂们高抬贵手 推荐一下 吧 你的精神支持是博主强大的写作动力以及转载收藏动力 欢迎转载 版权声明 本文原创发表于 请点击连接前往 未经作者同意必须保留此段声明 如有问题请联系我 侵立删 谢谢 我的博客
  • R4 STM32高级定时器笔记之PWM互补输出

    STM32高级定时器笔记之PWM互补输出 程序功能 通过两个GPIO 输出相反的PWM信号 带死区时间和刹车控制 PWM为50 要配置几个寄存器 CNT计数器 CCR输出比较寄存器器 输入捕获寄存器 ARR自动重装载寄存器 最大65535
  • 数据结构之Trie树

    目录 前言 什么是Trie树 如何实现一棵Trie树 Trie 树与散列表 红黑树的比较 问题 总结 参考资料 前言 搜索引擎的搜索关键词提示功能 我想你应该不陌生吧 为了方便快速输入 当你在搜索引擎的搜索框中 输入要搜索的文字的某一部分的
  • C语言共用体-union的用法

    定义格式 union 共用体名 成员列表 共用体特点 1 占用的内存等于最长的成员占用的内存 2 共用体使用了内存覆盖技术 同一时刻只能保存一个成员的值 如果对新的成员赋值 就会把原来成员的值覆盖掉 会影响其余所有成员 实例说明 typed
  • 二进制流:C++中使用 (char *)& 传递int型值

    文章目录 前言 一 利用二进制流传递整形数组值 1 1 整形数组 1 2 二进制流 1 2 1 那如何将整形数值依次按一个字节存放入二进制流中呢 1 2 2 如何重构回整形数值 二 结构体数组赋值 前言 此前参与罗技G29方向盘远程遥控au
  • 关于运行gitblit.cmd中的@java -cp gitblit.jar;“%CD%\ext\*“ com.gitblit.GitBlitServer --baseFold data报错

    关于运行gitblit cmd中的 java cp gitblit jar CD ext com gitblit GitBlitServer baseFold data报错 问题 关于运行gitblit cmd中的 java cp gitb
  • C#中async/await的线程ID变化情况

    一 简单的起步 Console WriteLine 主线程开始ID Thread CurrentThread ManagedThreadId a await Task Delay 100 c Console WriteLine 主线程结束I
  • 产学合作、协同育人|众享比特董事长严挺连续三年荣获“区块链60人”2022赋能中国区块链创新人物奖

    2022年11月4日 5日 由全国高校人工智能与大数据创新联盟主办的 2022第五届全国高校人工智能大数据区块链教育教学创新论坛 在北京隆重召开 北京众享比特科技有限公司董事长严挺荣获 区块链60人 2022赋能中国区块链创新人物奖 本届论
  • Sober算子边缘检测与Harris角点检测1

    此篇文章主要介绍了Sobel算子的底层运算规律 和cv Harris的相关介绍 测试 import numpy as np mm np array 1 2 3 pow mm 2 array 1 4 9 dtype int32 Harris
  • 大数据不得不说的事儿(一):存算分离凭什么能一统天下

    随着大数据系统建设的深入 企业的数据基础设施面临两个问题 一个是成本问题 随着累积的数据量的增大 大数据业务量的增多 数据存储和处理的成本越来越高 企业数据基础设施的投资越来越大 这部分投资挤占了企业大数据业务创新的空间 另一个是效率问题
  • 安装pycrypto,windows10,全解

    安装pycrypto 一 下载pycrypto源码或pip安装 1 下载pycrypto源码 建意先全部阅读一遍在进行安装 坑太多 不能急 官网 https www dlitz net software pycrypto github ht
  • jquery 实现页面自动加载

    最近组长布置了一项任务 让我们初步了解一下jquery 并用jquery实现页面的自动加载 我在网上找了一些资料实现此功能 现整理如下 首先是要理清思路 下面给一个我从网上找的具体的例子 会帮助大家更好的理解 将前台代码直接拷贝即可执行 这
  • SpringBoot接收前端参数json格式的五种方式(转)

    import java util List import java util Map import org springframework web bind annotation RequestBody import org springf
  • 查看某个端口的连接数情况

    windows指令 查看信息 netstat aon findstr 9200 find ESTABLISHED 查看连接数 netstat aon findstr 9200 find ESTABLISHED c linux 查看信息 ne
  • webpack 学习(一)前端常用的模块化设计模式之commonJs

    前端常用模块化规范 commonJs 规范 AMD ES6 Module规范 commonJs 和AMD 的区别 commonJs加载模块是同步的 也就是说只有加载完成的才会执行后面的操作 由于Node主要用于服务器编程 模块文件一般都存在
  • 深入 AXI4 总线(二)架构

    五个独立通道 AXI4 总线的一大特征是它有 5 个独立的传输通道 这些通道都只支持单向传输 作为类比 SPI 总线有 2 条传输通道 MISO MOSI SPI 输入输出的数据 大路朝天 各走一条 而作为对比 IIC 协议则只有 SDA
  • 类EMD的“信号分解方法”及MATLAB实现(第三篇)——CEEMDAN

    来帮忙填坑了 今天接着之前讲过的EEMD和CEEMD 来介绍一下 类EMD 分解方法的第三篇 1 CEEMDAN 自适应噪声完备集合经验模态分解 的概念 CEEMDAN 1 Complete Ensemble Empirical Mode