CEEMD画图工具(公开版)

最后更新于:2023-08-12 10:59:36

一、代码运行环境:

在使用该代码前,请务必安装时频域分析工具箱。(然后再在文末下载“CEEMD画图”相关代码并使用)

工具箱下载路径在这里

下载文件并解压,按照步骤操作即可完成工具箱安装。

已测试MATLAB2016/2018/2019/2020,其他MATLAB版本理论上也可以使用。

二、文件说明

1.demoCEEMD.m

用于测试CEEMD功能的脚本文件,可以直接运行其中调用了pCEEMD和pCEEMDandFFT。

2.pCEEMD.p

封装好的CEEMD画图程序,p文件。

函数参数说明:

function imf = pCEEMD(data,FsOrT,Nstd,NE)
% 画信号CEEMD分解图
% 输入:
% y为待分解信号
% FsOrT为采样频率或采样时间向量,如果为采样频率,该变量输入单个值;如果为时间向量,该变量为与y相同长度的一维向量。如果未知采样频率,可设置为1
% Nstd为附加噪声标准差与Y标准差之比
% NE为对信号的平均次数
% 输出:
% imf为经ceemd分解后的各imf分量值
% 例1:(FsOrT为采样频率)
% fs = 100;
% t = 1/fs:1/fs:1;
% data = sin(2*pi*5*t)+2*sin(2*pi*20*t);
% imf = pCEEMD(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 = pCEEMD(data,t,0.2,100);

画图效果如下(参考):

3.pCEEMDandFFT.p

封装好的画图程序,可以绘制出信号CEEMD分解与各IMF分量频谱对照图,p文件。

函数参数说明:

function imf = pCEEMDandFFT(y,FsOrT,Nstd,NE)
% 画信号CEEMD分解与各IMF分量频谱对照图
% 输入:
% y为待分解信号
% FsOrT为采样频率或采样时间向量,如果为采样频率,该变量输入单个值;如果为时间向量,该变量为与y相同长度的一维向量
% Nstd为附加噪声标准差与Y标准差之比
% NE为对信号的平均次数
% 输出:
% imf为经ceemd分解后的各imf分量值
% 例1:(FsOrT为采样频率)
% fs = 100;
% t = 1/fs:1/fs:1;
% y = sin(2*pi*5*t)+2*sin(2*pi*20*t);
% imf = pCEEMDandFFT(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 = pCEEMDandFFT(y,t,0.2,100);

% 注意:在使用该代码之前,请务必安装工具箱:http://hk.khscience.cn/docs/index.php/2020/04/09/1/

画图效果如下(参考):

4.kCEEMD.p

调整后的CEEMD函数,整合了ceemd函数,并针对工具箱进行了统一性的调整。

调整包括:

1.将imf分量由纵向改为横向,使之与时频域分析工具箱中其他模态分解工具的格式保持一致。方便与后续方法的衔接

2.原始ceemd函数中第一个分量为原始信号,删之

函数参数说明:

function imf = kCEEMD(data,Nstd,NE)
% 调整后的CEEMD函数,整合了ceemd函数,并针对工具箱进行了统一性的调整。
% 调整包括:1.将imf分量由纵向改为横向,使之与时频域分析工具箱(http://hk.khscience.cn/docs/index.php/2020/04/09/1/)中其他模态分解工具的格式保持一致。方便与后续方法的衔接
%          2.原始ceemd函数中第一个分量为原始信号,删之
% 输入:
% data:待分解的数据
% Nstd:附加噪声标准差与Y标准差之比
% NE:对信号的平均次数(添加的白噪声对儿数)
% 输出:
% imf:内涵模态分量,统一为n*m格式,其中n为模态数,m为数据点数。例如 imf(1,:)即IMF1,imf(emd,:)即为残差

% 注意:在使用该代码之前,请务必安装工具箱:http://hk.khscience.cn/docs/index.php/2020/04/09/1/

5.pFFT.p

封装好的fft计算程序,在pCEMDandFFT中调用,一般不需要修改。

三、使用教程

该教学视频是针对“类EMD”画图工具代码(完整版)的使用教程。

视频中是以CEEMD代码为案例讲解的。

其他的“类EMD方法”都可以参考该教程。

视频中4:00开始演示的如何使用自己的数据导入并调用

四、 关于完整版与公开版代码

公开版代码的函数文件为p文件,可以被调用,但无法查看代码。完整版代码中全部为m文件,m文件可以查看源码并自由修改。

如果需要封装好的画图函数(pCEEMD.m、pCEEMDandFFT.m、kCEEMD.m和pFFT.m)的源码,可在下述连接(完整版)获取。

编程不易,感谢支持~

五、获取公开版程序(需使用电脑浏览器打开)

CEEMD公开版代码V2.1.20

六、获取完整版程序(使用电脑浏览器或者手机浏览器打开)

获取通道一(淘宝):点击此处获取完整版程序

获取通道二(本页面):点击下面“立即支付”按钮,付款后获取完整版代码下载链接和售后联系方式~本通道处于测试阶段,使用该通道可以额外优惠(仅需21元)。付款完成后刷新一下本页面即可看到下载链接。

(注意支付跳转失败的话,请使用浏览器打开本页面)

您需要先支付 21元 才能查看此处内容!立即支付

七、完整版代码重要更新

20210131 代码初始版本

八、常见问题

1.参数NE、Nstd该怎么设置?

NE: 噪声系数的数量。这是一个整数,代表生成噪声实例的次数。增加NE可以改善结果的一致性,但会增加计算时间。一般来说,NE的设置可以在50到100之间,具体可以根据你的数据和计算能力进行调整。

Nstd: 噪声标准差。这是一个浮点数,它定义了添加到信号中的噪声的标准偏差。通常,Nstd的值设置在0.1到0.2之间,它会影响到信号分解的精度。设置过高可能会引入太多噪声,过低则可能对噪声的效果不够。

2.可以设置分解得到的imf的数量吗?

在网站现有的“类EMD”分解方法中,只有VMD分解是可以指定imf数的,其他的分解方法的分解数量均是自适应的,无法指定。(有些库或工具可能会提供这样的选项,但往往是通过当生成的IMF数等于指定数量时,分解强行停止,不是真正意义上的指定数量。)