ICEEMDAN/CEEMDAN:改进的/完全自适应噪声集合经验模态分解(matlab)

在预测领域中对原始数据进行分解,可以提高预测精度。分解算法在故障诊断领域也有重要作用。


CEEMDAN

CEEMDAN 算法是由 Torres M E.等人于2011 年提出的一种新型信号分解算法,较好地解决了经验模态分解(EEMD)存在的模态混叠现象。其具体分解过程如下描述:\displaystyle

步骤 1:将待分解信号 x(t) 添加 K 次均值为 0的高斯白噪声,构造共 K 次实验的待分解序列xi(t),其中i=1,2,3....,k.。

 式中:\varepsilon为高斯白噪声权值系数; \deltait 为第 i 次处理时产生的高斯白噪声。

步骤 2:对上述序列 xi(t) 进行 EMD 分解,分解得到第 1 个模态分量(IMF)并取其均值作为CEEMDAN 分解得到的第 1 个 IMF。 

       

式中:IMF1(t) 表示 CEEMDAN 分解得到的第 1 个模态分量; r1(t) 表示第 1 次分解后的余量信号。 

步骤 3:将分解后得到的第 j 阶段余量信号添加特定噪声后,继续进行 EMD 分解。 

  

式中: IMFj (t)表示 CEEMDAN 分解得到的第 j 模态分量;Ej-1(.) 表示对序列进行 EMD 分解后的第 j -1个 IMF 分量;\varepsilonj-1表示 CEEMDAN 对第 j -1阶段余量信号加入噪声的权值系数; r j(t) 表示第 j阶段余量信号。

 步骤 4:迭代停止,如果满足 EMD 停止条件,第 n 次分解的余量信号 rn(t) 为单调信号,则迭代停止,CEEMDAN 算法分解结束。

原理图如下所示:


ICEEMDAN(改进的CEEMDAN)

Colominas等人提出的ICEEMDAN信号处理方法,是由自适应噪声完全集合经验模态分解(CEEMDAN)的基础上发展而来。改进的方法不同于CEEMDAN在分解过程中直接添加高斯白噪声,而是选取白噪声被EMD分解后的第KIMF分量。以分解风速序列为例,具体步骤如下:

 

MATLAB程序

load ('wind_7.mat');%输入你的分解数据

Nstd = 0.2;
NR = 500;
MaxIter = 5000;%Nstd/NR/MaxIter;可根据你的输入数据类型,查找相关文献参考
SNRFlag = 1;%当数值为1时,为ICEEMDAN分解当数值为2时,为CEEMDAN分解。


[modes,its]=fenjie(wind_7,0.2,500,5000,1);%提取子程序分解
t=1:length(wind_7);

[a b]=size(modes);

figure;
subplot(a+1,1,1);
plot(t,wind_7);% 注意最后展示的图像处理,包含原始序列。
ylabel('wind_7')
set(gca,'xtick',[])
axis tight;

for i=2:a
    subplot(a+1,1,i);
    plot(t,modes(i-1,:));
    ylabel (['IMF ' num2str(i-1)]);
    set(gca,'xtick',[])
    xlim([1 length(wind_7)])
end;

subplot(a+1,1,a+1)
plot(t,modes(a,:))
ylabel(['IMF ' num2str(a)])
xlim([1 length(wind_7)])

CEEMDAN分解

                            ICEEMDAN分解                             

 这里,输入数据用的是.mat文件,读者也可以自行通过EXCEL读入。通过两种分解的图像分析可看出,ICEEMDAN的分解可以更彻底,当然数据类型不同,具体结果要看具体分析。

文件资料中包含EMD文件,具体分解过程中要用到EMD分解。两种分解都是通过EMD分解的基础上发展而来的。

参考文献

[1]魏炘、石强、符文熹、陈良. 考虑CEEMDAN样本熵和SVR的短期风速预测[J]. 水电能源科学, 2020, v.38;No.243(11):213-216.

  • 44
    点赞
  • 315
    收藏
    觉得还不错? 一键收藏
  • 88
    评论
### 回答1: 为了更好地回答你的问题,我需要更多的信息。请提供更多关于iceemdan分解matlab程序的细节,例如程序的作用、输入输出以及程序的具体实现细节等。这样我才能为你提供恰当的回答。 ### 回答2: ICEEMDAN是一种基于集成经验模态分解(EEMD)的MATLAB程序,用于对信号进行分解和去噪。 首先,EEMD是一种数据分析方法,通过将原始信号分解成多个固有模态函数(IMF),对信号进行降噪和特征提取。EEMD通过添加高斯白噪声并多次运行Hilbert-Huang变换来实现。在ICEEMDAN中,该过程被集成了多次以提高结果的准确性和可靠性。 ICEEMDAN程序的工作流程如下: 1. 首先,加载和准备要分解和去噪的信号数据。 2. 设置EEMD的参数,例如噪声水平、EEMD的模式数量等。 3. 运行EEMD过程。在每次运行中,通过将高斯白噪声添加到信号中来构造多个新的扰动信号,然后应用Hilbert-Huang变换得到IMFs和一个残差模态函数(RMF)。 4. 所产生的多个IMFs和RMF被聚合为一个集合。通过对每个IMF和RMF计算平均值来得到最终的IMFs和RMF。 5. 可以选择只保留具有足够能量的IMFs,并且可以应用阈值或其他方法来去除不需要的IMFs和RMF。 6. 最后,可以对IMFs和RMF进行重构,得到经过去噪和分解的信号。 通过该程序,可以将原始信号分解为多个固有模态函数,并去除噪声部分,从而获得更准确的信号特征和更清晰的信号图像。这在许多信号处理和数据分析的应用中都得到了广泛的应用。 ### 回答3: iceemdan是一种用于信号处理matlab程序,它主要用于对非线性和非平稳的信号进行分解。以下是对iceemdan程序的简要解释: iceemdan程序的主要输入是待分解的信号,通常是一个时间序列。该程序首先对信号进行预处理,包括去除噪声和趋势的部分。然后,它使用一个称为EMD(经验模态分解)的方法对信号进行分解。EMD是一种自适应的,数据驱动的分解方法,它将信号分解为多个本征模态函数(EMD)和一个剩余项。 EMD的基本思想是通过在信号中找到局部极大值和极小值点来提取信号的本征模态函数。iceemdan程序使用了改进的EMD算法,它通过使用标准EMD算法和HEMD(混沌扩展的经验模态分解)相结合的方式来提高分解结果的质量。 具体来说,iceemdan程序首先将信号进行局部极大值和极小值点检测,并根据这些点进行插值。然后,它使用一个滑动窗口的方法从信号中提取出当前的EMD分量,并将其从原信号中减去。这个过程将重复执行,直到剩余项达到某个终止条件为止。 iceemdan程序的输出是分解后的本征模态函数和剩余项。本征模态函数描述了信号在不同频率和振幅上的变化模式,而剩余项则包含了未被分解的残余部分。分解后的本征模态函数可以用于进一步分析和处理,比如能量谱分析和贡献度分析等。 总的来说,iceemdan是一种功能强大的matlab程序,它用于对非线性和非平稳信号进行分解,并提供了解决这些信号处理问题的有效方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 88
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值