时序分解 | Matlab实现GSWOA-VMD改进鲸鱼优化算法优化变分模态分解时间序列信号分解

时间:2024-04-08 16:12:59

时序分解 | Matlab实现GWO-CEEMDAN基于灰狼算法优化CEEMDAN时间序列信号分解

目录

    • 时序分解 | Matlab实现GWO-CEEMDAN基于灰狼算法优化CEEMDAN时间序列信号分解
      • 效果一览
      • 基本介绍
      • 程序设计
      • 参考资料

效果一览

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

基本介绍

Matlab实现GSWOA-VMD改进鲸鱼优化算法优化变分模态分解时间序列信号分解直接替换Excel数据即可用,注释清晰,适合新手小白
附赠时间序列测试数据,可直接运行main一键出图

程序设计

  • 完整源码和数据获取方式私信博主回复:Matlab实现GSWOA-VMD改进鲸鱼优化算法优化变分模态分解时间序列信号分解
%% 以最小包络熵、最小样本熵、最小信息熵、最小排列熵为目标函数(任选其一),采

%% 选取数据
da = xlsread('测试数据.xlsx','B:B'); %这里选取测试数据,B代表Excel中的第B列,注意这里替换为自己的数据即可,数据形式为n行*1列,列数必须为1plot(da);
title('原始信号')
set(gcf,'color','w')

%% 设置参数
lb = [0.15 50];           % 噪声幅值权重的优化范围设置为[0.15,0.6],噪声添加次数的优化范围为[50,600]
ub = [0.6 600];  
dim = 2;                  % 优化变量数目
Max_iter=20;              % 最大迭代数目
SearchAgents_no=10;       % 种群规模


%% 画适应度函数曲线图,并输出最佳参数
figure
plot(Convergence_curve,'linewidth',1);
title('迭代曲线图')
xlabel('迭代次数');
ylabel('适应度值');

set(gcf,'color','w')


%% CEEMDAN分解图
X = da;
Nstd = bestX(1);
NR = fix(bestX(2));
MaxIter = 10;
[anmodes,its]=ceemdan(X,Nstd,NR,MaxIter);
plotimf(anmodes,size(anmodes,1),'r',' CEEMDAN分解结果'); %画图


%% 频谱图
fs=1;
N=400;
u=anmodes;
figure('Name','频谱图','Color',[1 1 1])
for i=1:size(u,1) 
    subplot(size(u,1) ,1,i)
    [cc,y_f]=plot_fft(u(i,:),fs,1);
    plot(y_f,cc,'b','LineWIdth',1);
    ylabel(['IMF',num2str(i)]);
end


参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/129215161
[2] https://blog.csdn.net/kjm13182345320/article/details/128105718## 标题