时序分解 | Matlab实现GWO-CEEMDAN基于灰狼算法优化CEEMDAN时间序列信号分解
目录
效果一览
基本介绍
Matlab实现GSWOA-VMD改进鲸鱼优化算法优化变分模态分解时间序列信号分解直接替换Excel数据即可用,注释清晰,适合新手小白
附赠时间序列测试数据,可直接运行main一键出图
程序设计
- 完整源码和数据获取方式私信博主回复:Matlab实现GSWOA-VMD改进鲸鱼优化算法优化变分模态分解时间序列信号分解。
clike
%% 以最小包络熵、最小样本熵、最小信息熵、最小排列熵为目标函数(任选其一),采
%% 选取数据
da = xlsread('测试数据.xlsx','B:B'); %这里选取测试数据,B代表Excel中的第B列,注意这里替换为自己的数据即可,数据形式为n行*1列,列数必须为1。
plot(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## 标题