时序分解 | Matlab实现SSA-VMD麻雀算法优化变分模态分解时间序列信号分解
目录
- 时序分解 | Matlab实现SSA-VMD麻雀算法优化变分模态分解时间序列信号分解
- 效果一览
- 基本介绍
- 程序设计
- 参考资料
效果一览
基本介绍
SSA-VMD麻雀搜索算法SSA优化VMD变分模态分解 可直接运行 分解效果好 适合作为创新点(Matlab完整源码和数据)
1.利用麻雀搜索优化算法优化vmd中的参数k、a,分解效果好,包含边际谱、频率图、收敛曲线等图,满足您的需求,使用者较少,适合作为创新点。
2.包含VMD超参数优化迭代过程图,凸显每次迭代过程的变化。
3.麻雀搜索算法(SparrowsearchAlgorithm,SSA)是一种新型的群智能优化算法在2020年提出,主要是受麻雀的觅食行为和反捕食行为的启发,具有收敛速度快、寻优能力强等优点。
4.数据为excel数据,方便替换,运行主程序main即可,可直接运行matlab程序。
程序设计
- 完整源码和数据获取方式:Matlab实现SSA-VMD麻雀算法优化变分模态分解时间序列信号分解。
% 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