✅作者简介:热爱数据处理、建模、算法设计的Matlab仿真开发者。
🍎更多Matlab代码及仿真咨询内容点击 🔗:Matlab科研工作室
🍊个人信条:格物致知。
🔥 内容介绍
在信号处理领域中,经验模态分解(Empirical Mode Decomposition,EMD)是一种非常有效的方法,用于将复杂的非线性和非平稳信号分解为一组称为本征模态函数(Intrinsic Mode Functions,IMFs)的基本成分。然而,EMD方法在处理噪声干扰时存在一些问题,因为噪声会被错误地分解为IMFs的一部分。为了解决这个问题,一种改进的方法被提出,称为完备集合经验模态分解(Complete Ensemble Empirical Mode Decomposition with Adaptive Noise,CEEMDAN)。本文将介绍CEEMDAN方法,并结合排列熵重构分量算法,详细讨论其流程。
CEEMDAN方法的核心思想是通过构建多个噪声扰动子集来适应性地去除噪声干扰。首先,对原始信号进行一次EMD分解,得到一组IMFs和一个剩余项。然后,从剩余项中提取噪声,构建噪声子集。接下来,将每个噪声子集与原始信号相加,得到一组新的扰动信号。对每个扰动信号进行EMD分解,得到一组新的IMFs和剩余项。重复这个过程多次,得到多组IMFs和剩余项。最后,将所有IMFs和剩余项进行平均,得到最终的IMFs和剩余项。
在CEEMDAN方法中,选择合适的噪声子集对噪声的去除效果至关重要。为了解决这个问题,引入了一种称为排列熵的指标。排列熵是一种用于测量信号复杂度的方法,可以通过对信号进行排列操作来计算。在CEEMDAN方法中,通过计算每个噪声子集的排列熵,选择具有最小排列熵的噪声子集进行噪声去除。这样可以有效地提高噪声去除的准确性和稳定性。
排列熵重构分量算法是CEEMDAN方法的一个重要步骤,用于重构信号的每个IMF和剩余项。对于每个IMF和剩余项,首先计算其排列熵。然后,根据排列熵的大小,对信号进行排列操作,得到一组排列后的信号。接下来,对排列后的信号进行EMD分解,得到一组新的IMFs和剩余项。重复这个过程多次,最后将所有IMFs和剩余项进行平均,得到最终的IMFs和剩余项。通过排列熵重构分量算法,可以有效地提高CEEMDAN方法的分解精度和稳定性。
综上所述,CEEMDAN+PE自适应噪声完备集合经验模态分解+排列熵重构分量算法是一种用于处理非线性和非平稳信号的有效方法。它通过构建多个噪声子集和排列熵的计算,实现了对噪声的自适应去除和信号的精确分解。这种方法在许多领域中都有广泛的应用,如地震信号处理、生物医学信号处理等。相信随着进一步的研究和发展,CEEMDAN+PE自适应噪声完备集合经验模态分解+排列熵重构分量算法将会在信号处理领域发挥更大的作用。
📣 部分代码
%% 清空环境变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行
%% 导入数据
res = xlsread('数据集.xlsx');
%% 划分训练集和测试集
temp = randperm(357);
P_train = res(temp(1: 240), 1: 12)';
T_train = res(temp(1: 240), 13)';
M = size(P_train, 2);
P_test = res(temp(241: end), 1: 12)';
T_test = res(temp(241: end), 13)';
N = size(P_test, 2);
%% 数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax('apply', P_test, ps_input);
t_train = ind2vec(T_train);
t_test = ind2vec(T_test );
⛳️ 运行结果
🔗 参考文献
[1] 张玉兰,张宏伟,王新环.基于CEEMDAN-TSMPE-PCA风力发电机齿轮箱高速轴承故障诊断技术[J].噪声与振动控制, 2022(004):042.
[2] 赵辉,赵智立,王红君,等.光伏电站短期功率区间预测[J]. 2021.DOI:10.3969/j.issn.1002-087X.2021.04.017.
[3] 张建伟,王立彬,马晓君.排列熵算法在高坝结构运行状态监测中的应用[C]//水库大坝高质量建设与绿色发展——中国大坝工程学会2018学术年会.0[2023-11-01].
[4] 花小朋,邱林江,徐森.一种基于排列熵的自适应噪声完备集合经验模式分解方法:CN202210472985.2[P].CN202210472985.2[2023-11-01].