粒子群算法优化VMD参数matlab代码免费获取

粒子群算法优化VMD参数matlab代码获取

这篇文章用来介绍如何在matlab环境下使用粒子群优化算法(PSO)优化变分模态分解(VMD)的参数(分解层数 K )和(惩罚因子 α )。

1.粒子群算法介绍

关注公众号“慢慢的不急”获取代码

关于粒子群算法的原理这里不再赘述,仅介绍粒子群算法的几个主要参数。

w:速度更新时惯性的权重

c1:速度更新时个体经验的权重

c2:速度更新时群体经验的权重

关于 w,c1,c2 值的设置请查阅其他文献或方法,这里仅作简单介绍。

2.变分模态分解(VMD)算法介绍

如上,不对其原理进行赘述,仅介绍其需要优化的两个参数

K :用于控制分解层数,即将输入信号分解为 K 个IMF分量

α :惩罚因子决定IMF分量的带宽,α 设置小则会出现模态混叠的现象,若设置大则会造成局部信息缺失的问题。

因此有必要对VMD分解中 Kα 参数的选取进行优化选择。

vmd函数代码

matlab在2018a及以上版本中内置了vmd函数,因此本篇文章调用的是matlab自带的vmd函数,如使用其他个人开发的vmd函数需要自行调试。

如何判断使用的是否是matlab自带的vmd函数?

可在命令行输入 which vmd 命令,如出现以下地址则调用的是matlab自带vmd函数。

E:\Program Files\MATLAB\R2022b\toolbox\shared\signalwavelet\signalwavelet\vmd.m
%忽略盘符

如果发现版本是2018a及以上版本,但vmd.m的位置是另一个位置可能是安装了其他vmd函数,可删除对应位置的vmd函数,然后命令行输入

rehash toolbox

重新输入which vmd命令查看位置是否正确,即可使用matlab自带vmd函数。

也有可能在安装matlab时没有安装signal process工具箱,此时只能重新安装此工具箱,具体方法请自行百度。

3.评估函数

评估函数用于评估使用不同 Kα 参数对信号进行VMD分解后获得的IMF分量的性能。可用各种熵函数作为评估函数,如近似熵、能量熵、样本熵、香农熵、包络熵、排列熵等。常见为使用分解出的IMF分量中最小熵值作为评估标准。

4.代码介绍

(1)文件夹介绍

如下图,代码中共包含7个文件从上到下依次为:

在这里插入图片描述

图1:文件目录

Approximate Entropy.m 近似熵函数用于计算IMF分量的近似熵值;

BoundaryCheck.m 边界检查函数,用于保证pso.m文件生成的粒子的随机位置在边界范围内;

cost_function.m 评估函数;

data.csv 示例数据,单列csv文件;

initialization.m 初始化函数,用于对pso参数进行初始化;

main_pso_vmd.m 主函数,用于读取示例数据并运行优化算法,然后输出最优参数值;

pso.m 粒子群算法代码;

(2)主函数代码介绍

如下图所示为main_pso_vmd.m函数的代码。

第三行代码用于读取数据;

第四到第8行为pso算法参数;

第九第十行为pso优化vmd时设置的vmd参数 Kα 的范围,代码所示为设置 5<K<10300<α<10000

第十一第十二行为pso算法参数;

第十三行为pso算法搜索粒子位置次数;

第十五行为确定评估函数计算方式,这里为选择近似熵作为评估函数; (详细可看cost_function函数)

第十七行为确定目标函数,x为pso随机的参数值,data为输入数据,method即第十五行。

第十八行为调用pso函数优化vmd参数,并输出最优参数位置,最优评价函数,以及评价值变化曲线。

第十九行为在命令行输出最优评价函数。

在这里插入图片描述

图2

第22行为绘制评估函数变化曲线。
在这里插入图片描述

图3
第十八行代码中Best_pos和Best_fitness参数即pso优化vmd得到的最佳位置( *K* 和 *α* 的值)和最佳适应度函数值。

第24-32行为使用获得的最优参数对输入信号进行vmd分解,并绘图展示分解后的IMF分量。

如下图所示为适应度函数随pso迭代次数变化示意图。

请添加图片描述

图4:适应度曲线

请添加图片描述

图5:IMF分量

5.代码获取

回复psovmd即可获得代码。

(主要为优化算法优化其他问题)

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慢慢的不急

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值