这是“类EMD”方法系列的第7篇,前几篇分别是EEMD、CEEMD、CEEMDAN、VMD、ICEEMDAN、LMD,想要看前几种方法的点击链接可以跳转。

经验小波变换(empirical wavelet transform,EWT)是2013年由Gilles提出[1]。这个方法是EMD方法和小波变换的结合,综合了EMD的自适应性和小波方法理论完备、计算简单快捷等特点。

1. EWT的概念

经验小波变换的核心思想其实并不难理解。

我们在做所谓的模态分解时,很多时候目的就是将不同频率段的信号单独提取出来,不过此时将面临一个难点:提取的频率范围该怎么选。之前提到的VMD方法是通过变分问题构造解决的这个问题;今天要介绍的EWT采用的是另外一个思路,即对信号的频谱进行分割划分,构建合适的小波滤波器组,对信号进行分解

其分解过程大致如下:

步骤1:计算输入信号的傅里叶变换。
步骤2:将傅里叶频谱划分为N个连续段落,通过搜索频谱的局部极大值确定边界,并将其按降序进行排列,假设极大值个数为 M,当 M ≥N 时,保留前N-1个极大值,当 M<N时,保留全部极大值并对N进行修正,最后,取两个局部极大值间的中间频率作为ωn。
步骤3:找到分割边界并分割频谱。
步骤4:构建合适的小波滤波器组,对信号进行分解。

相关的理论涉及比较繁复的计算过程,想要深入研究的同学可以看一下方法提出者的论文原文[1],另外有一个PPT讲述了从EMD到EWT的推演过程[2],有兴趣的话也可以看一下。

2.EWT的编程实现

ewt函数在MATLAB2020b版本中内置到官方库了,不过按照“类EMD”系列的代码的统一风格,笔者重新进行了封装,增加了绘制IMF分量与频谱对照的绘图函数,封装后的函数有两个。(另外,在MATLAB官方函数以外,还存在着第三方的ewt的工具箱,不过这里就不采用和集成了)

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

%% 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.12elsey(i) = 0;end
end
sig = x+y; %信号叠加
figure('color','white')
plot(t,sig,'k') %绘制原始信号

(一)时域分解图

画EWT分解图的函数介绍如下:

function mra = pEWT(data,FsOrT)
% 画信号EWT分解图
% 输入:
% data为待分解信号
% FsOrT为采样频率或采样时间向量,如果为采样频率,该变量输入单个值;如果为时间向量,该变量为与y相同长度的一维向量。如果未知采样频率,可设置为1
% 输出:
% mra为经EWT分解后的各mra分量值
% 例1:(FsOrT为采样频率)
% fs = 100;
% t = 1/fs:1/fs:1;
% data = sin(2*pi*5*t)+2*sin(2*pi*20*t);
% mra = pEWT(data,fs);
% 例2:(FsOrT为时间向量,需要注意此时FsOrT的长度要与y相同)
% t = 0:0.01:1;
% data = sin(2*pi*5*t)+2*sin(2*pi*20*t);
% mra = pEWT(data,t);
% 注意:该代码仅能在2020b及更新MATLAB版本中运行

应用上边的函数,画出的图是这样的:

注意,这里的分量没有用imf表示,而是用mra表示,即multiresolution analysis(多分辨率分析)

这个分解结果也可以说是完美的了,没有任何无效分量,有兴趣的同学可以翻一下之前EEMD、CEEMD、CEEMDAN、ICEEMDAN对同样一段信号做的分解效果,皆可以发现EWT的厉害之处了。

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

画EWT分解图及对应频谱图的函数介绍如下:

function mra = pEWTandFFT(y,FsOrT)
% 画信号EWT分解与各mra分量频谱对照图
% 输入:
% y为待分解信号
% FsOrT为采样频率或采样时间向量,如果为采样频率,该变量输入单个值;如果为时间向量,该变量为与y相同长度的一维向量
% 输出:
% mra为经EWT分解后的各mra分量值
% 例1:(FsOrT为采样频率)
% fs = 100;
% t = 1/fs:1/fs:1;
% y = sin(2*pi*5*t)+2*sin(2*pi*20*t);
% mra = pEWTandFFT(y,fs);
% 例2:(FsOrT为时间向量,需要注意此时FsOrT的长度要与y相同)
% t = 0:0.01:1;
% y = sin(2*pi*5*t)+2*sin(2*pi*20*t);
% mra = pEWTandFFT(y,t);% 注意:该代码仅能在2020b及更新MATLAB版本中运行

画出的图是这样的:

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

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

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

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

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

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

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

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

Mr.看海:类EMD的“信号分解方法”及MATLAB实现(第四篇)——VMD

Mr.看海:类EMD的“信号分解方法”及MATLAB实现(第五篇)——ICEEMDAN

Mr.看海:类EMD的“信号分解方法”及MATLAB实现(第六篇)——LMD

参考

  1. ^abGilles, Jérôme. “Empirical Wavelet Transform.” IEEE Transactions on Signal Processing 61, no. 16 (August 2013): 3999–4010. https://doi.org/10.1109/TSP.2013.2265222.
  2. ^EWT讲解PPT http://pdfs.semanticscholar.org/3803/d42330506aff3a5cc5eaf69cf589c9c8929b.pdf

类EMD的“信号分解方法”及MATLAB实现(第七篇)——EWT相关推荐

  1. 类EMD的“信号分解方法”及MATLAB实现(第六篇)——LMD

    继续完善"类EMD"方法系列,本篇是继EEMD.CEEMD.CEEMDAN.VMD.ICEEMDAN后的第6篇,想要看前几种方法的点击链接可以跳转. LMD(local mean ...

  2. 类EMD的“信号分解方法”及MATLAB实现(第四篇)——VMD

    重头戏来了. 在以往的应用经验里,VMD方法在众多模态分解方法中可以说是非常好的.从催更力度上看,这个方法也是格外受关注.笔者决定加快进度快一些写完这个方法,十月份了有些同学要开始做毕设,希望这篇文能 ...

  3. 基于ITD实现的轴承故障信号分解并附Matlab源码

    基于ITD实现的轴承故障信号分解并附Matlab源码 轴承是旋转机械中重要的支撑部件,其状态的健康程度对设备运行的性能和寿命有着至关重要的影响.因此,轴承状态监测和故障诊断成为了研究热点.本文基于IT ...

  4. 【轴承故障分解】基于matlab ITD轴承故障信号分解【含Matlab源码 1871期】

    ⛄一.ITD轴承故障信号分解简介 滚动轴承局部损伤故障振动信号多为非平稳的多分量调制信号, 采用合适的时频分析方法将故障信号分解为若干个单分量AM-FM信号, 再对其包络解调是轴承故障诊断的常用手段. ...

  5. 【轴承故障分解】ITD轴承故障信号分解【含Matlab源码 1871期】

    ⛄一.ITD轴承故障信号分解简介 滚动轴承局部损伤故障振动信号多为非平稳的多分量调制信号, 采用合适的时频分析方法将故障信号分解为若干个单分量AM-FM信号, 再对其包络解调是轴承故障诊断的常用手段. ...

  6. “类EMD”算法分解后要怎样使用(1)——内涵模态分量IMF的方差贡献率、平均周期、相关系数的计算及MATLAB代码实现

    之前我们有了十几篇文章讲述了EMD算法的基础理论.IMF的含义.EMD的MATLAB实现方法,EEMD.CEEMD.CEEMDAN.VMD.ICEEMDAN.LMD.EWT的理论及代码实现,还讲到了H ...

  7. 信号分解(如 EMD,ITD)应用于时间序列预测时是否存在问题

    类似EMD的信号分解方法用于预测前的预处理是否存在原理上问题 很多学者利用种种信号分解方法来分解信号后,再进行时间序列预测,常用方法有EMD(Empirical Mode Decomposition) ...

  8. 【信号分解】LMD算法及其应用

    目录 一.LMD算法 1.基本原理 2.算法的优缺点 二.LMD应用+MATLAB代码 1.去噪 2.特征提取 3.改进VMD分解 参考文献 局部均值分解(local meanvdecompositi ...

  9. 运用经验模态分解方法(EMD)对实测探地雷达数据进行处理

    运用经验模态分解方法(EMD)对实测探地雷达数据进行处理 经验模态分解(EMD)是一种新型自适应信号时频处理方法,特别适用于非线性非平稳信号的分析处理.探地雷达实测数据存在干扰,因此运用经验模态分解( ...

最新文章

  1. 使用级联样式表的好处在于_现在都在使用益阳云终端解决方案了,原因就在于这些好处...
  2. History of program (language).
  3. 工业交换机和工控交换机有什么区别?
  4. BZOJ 4259: 残缺的字符串 [FFT]
  5. python 时分秒毫秒_第一篇:Python处理时间日期
  6. Fiddler设置断点(一)
  7. spingMVC拦截器 -单个、多个、设想
  8. CISCO路由器的备份与还原(1)
  9. 少样本文本分类 InductionNet
  10. 从代码书写理解指针,很重要
  11. 前端传入JSON数组转换对象存入数据库
  12. xshell过期/安装教程
  13. zebradesginer zpl代码_斑马打印机连三菱PLC与VB.NET
  14. 最新 Eclipse 版 JRebel 激活
  15. ubuntu查看实时网速
  16. 0914WEB漏洞-二次,加解密,DNS等注入
  17. jQuery实现小游戏飞机大战
  18. matlab中wav转txt6,WAV转TXT专家下载
  19. ERP系统物料清单管理:自由选配,随需应变!
  20. 【LibRaw】原始图像解码库介绍(三)——数据结构

热门文章

  1. 切换双屏之后应用不显示在桌面的问题
  2. 定位教程3---固定相机,先拍后抓
  3. html 加减法,加减法速算技巧太神奇了!
  4. 从市场应用角度上来划分,云可分为文件云、应用云、手机云和开放云
  5. [原创]水知道答案吗?(一)
  6. 【NLP】 文本分类 主题预测 综述
  7. 你会查杀病毒吗?反病毒技巧! 比较长。
  8. 学pyqt5之前需要学python吗_【第一节】PyQt5简介
  9. 2021-03-17XX兔展-19.00-N.008
  10. 写给33岁的自己:为之奋斗一生的事业