CEEMDAN-CPO-VMD二次分解(CEEMDAN+冠豪猪优化算法CPO优化VMD)
目录
- CEEMDAN-CPO-VMD二次分解(CEEMDAN+冠豪猪优化算法CPO优化VMD)
- 效果一览
- 基本介绍
- 程序设计
- 参考资料
效果一览
基本介绍
首先运用CEEMDAN对数据进行一次分解,之后运用冠豪猪优化算法(CPO)优化VMD对一次分解结果的第一个高频分量进行分解,充分提取信息。
实现平台:Matlab,中文注释清晰,非常适合科研小白
冠豪猪优化器(Crested Porcupine Optimizer,CPO)于2024年1月发表在中科院1区SCI期刊Knowledge-Based Systems上。
模型运行步骤:
1.利用冠豪猪优化算法优化VMD中的参数k、a,分解效果好,包含分解效果图、频率图、收敛曲线等图等。
2.冠豪猪优化算法CPO是24年最新提出的新算法
3.相较一次分解,二次分解更能准确提取数据信息,可用于更高精度的预测或分类
3.附赠测试数据 直接运行main即可一键出图
程序设计
- 完整源码和数据获取方式私信回复Matlab基于CEEMDAN-CPO-VMD二次分解(CEEMDAN+冠豪猪优化算法CPO优化VMD)。
clear all
close all
clc
warning off
%% ceemdan分解
% 加载信号
signal=xlsread('data.xlsx');
%% 分解
addpath(genpath(pwd)) % 添加路径
D_num =5;
IMF = decomposition_compilations(signal,D_num); % imf格式为:模态个数 x 数据长度
rmpath(genpath(pwd)) % 移除路径
%% 绘图-最后一个imf可视为残差
% plot_func(signal, IMF)
%% 二次分解 CPO-VMD分解
%% 参数设置
data=IMF(1,:);
len=length(data);
f=data(1:len);
% alpha = 2000; % moderate bandwidth constraint
tau = 0; % noise-tolerance (no strict fidelity enforcement)
% K = 4; % 4 modes
DC = 0; % no DC part imposed
init = 1; % initialize omegas uniformly
tol = 1e-7;
%% 普通VMD分解
%[u, u_hat, omega] = VMD(f, alpha, tau, K, DC, init, tol);
% 分解
[u1, u_hat1, omega1,curve,Target_pos] = WLVMD(f, tau, DC, init, tol);
figure
plot(curve,'linewidth',1.5);
title('收敛曲线')
xlabel('迭代次数')
ylabel('适应度值')
grid on
%分解
figure
subplot(size(u1,1)+1,1,1);
plot(f,'k');grid on;
title('原始数据');
for i = 1:size(u1,1)
subplot(size(u1,1)+1,1,i+1);
plot(u1(i,:),'k');
end
disp(['最优K值为:',num2str(Target_pos(2))])
disp(['最优alpha值为:',num2str(Target_pos(1))])
disp(['最优综合指标为:',num2str(min(curve))])
%% 计时结束
%% 频域图
参考资料
[1] https://blog.csdn.net/kjm13182345320/article/details/129215161
[2] https://blog.csdn.net/kjm13182345320/article/details/128105718