时序分解 | Matlab实现WOA-VMD鲸鱼算法WOA优化VMD变分模态分解

发布于:2024-04-18 ⋅ 阅读:(24) ⋅ 点赞:(0)

时序分解 | Matlab实现WOA-VMD鲸鱼算法WOA优化VMD变分模态分解

效果一览

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基本介绍

Matlab实现WOA-VMD鲸鱼算法WOA优化VMD变分模态分解(完整源码和数据)
1.利用鲸鱼优化算法优化vmd中的参数k、a,分解效果好,包含边际谱、频率图、收敛曲线等图,满足您的需求,使用者较少,适合作为创新点。
2.包含VMD超参数优化迭代过程图,凸显每次迭代过程的变化。
3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
5.数据为excel数据,方便替换,运行主程序main即可,可直接运行matlab程序。

程序设计

% Input and Parameters:
% ---------------------
% signal  - 待分解的时域信号
% alpha   - 惩罚因子
% tau     - time-step of the dual ascent ( pick 0 for noise-slack )
% K       - the number of modes to be recovered
% DC      - true if the first mode is put and kept at DC (0-freq)
% init    - 0 = all omegas start at 0
%                    1 = all omegas start uniformly distributed
%                    2 = all omegas initialized randomly
% tol     - tolerance of convergence criterion; typically around 1e-6
%
% Output:
% -------
% u       - 分解变量的集合
% u_hat   - 变量的频谱
% omega   - 变量中心频率
%% 麻雀算法参数设置
pop = 5;%种群数量
Max_iteration = 20;%最大迭代次数
lb =[800,4]; %下边界
ub = [2000,10];%上边界
dim = 2; %维度为2,即alpha,K
fobj = @(x) fun(x,f,tau, DC, init, tol);
[~,Target_pos,SSA_cg_curve,process] = SSA(pop,Max_iteration,lb,ub,dim,fobj);%优化函数 求K Alpha 熵值
%% 画适应度曲线与2个参数的变化曲线
huatu(process,'VMD')

Target_pos = round(Target_pos);
SSA_cg_curve=abs(SSA_cg_curve);

参考资料

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