VMD确定分解个数K(matlab)

VMD确定分解个数K

1. VMD基础概念

变模态分解(variational mode decomposition,VMD)
将一个时间序列f分解成k个具有固定中心频率ω_k的模态分量u_k (t),并使每个模态量的频率估计带宽之和最小。对各模态分量进行Hilbert变换得到其单边频谱,通过混合一估计中心频率,将各分量的单边频谱调制到基频带,再经过对解调信号梯度的L2正则化进行高斯平滑估计,得到风功率分量的带宽。对应的受约束的变分模型表示为:
在这里插入图片描述

其中,∂t表示求偏导,δ(t)表示狄拉克分布函数。
1.2变分问题的求解
引入拉格朗日乘子 和二次罚函数 ,将上述约束变分问题转化为无约束问题,即
在这里插入图片描述

利用乘数的交替方向法寻找扩展拉格朗日表达式(2)的鞍点,得到各模态的频域更新,则模态分量和中心频率的迭代表达式为:

在这里插入图片描述

其中, 表示分量的维纳滤波; 表示对应模态的中心频率;对 进行傅里叶逆变换,取实部{u_k (t)}得到时域模态分量;n表示迭代次数;ω表示频率值。最后通过傅里叶逆变换转换到时域,得到序列分解后的k各窄带IMF分量,完成了信号在频域内的自适应分割。
VMD是将序列从时域转换到频域内进行分解,对于这类非线性数据既能很好的保留原始信息,又能避免变量信息重叠,且分解过程具有较强的鲁棒性。

2.根据中心频率选取分解个数K

VMD分解的效果主要受模态数的选取值的影响,当模态的选取值较小时,由于VMD算法相当于自适应滤波器组,原始信号中一些重要信息将会被过滤,影响后续预测的精度;而当模态的选取值较大时,相邻模态分量的中心频率则会相距较近,导致模态重复或产生额外的噪声。不同模态的主要不同点在于中心频率的不同,所以,通过对不同模态数下中心频率的分布进行观察选取合适的模态数值。
在这里插入图片描述

3.根据相关系数进一步确定K

K=5时的分解结果中的422Hz、851 Hz和1530 Hz的三个中心频率比较接近,大概率会发生通频带重合、模态重合的现象,从而造成风功率信号的过分解。因此,为了进一步确定模态数的选取值K,对分解出的相邻的模态分量的相关性进行分析,求解其皮尔逊相关系数。
在这里插入图片描述

4.代码

https://download.csdn.net/download/hahahahah123456/15468344

5.关于中心频率的计算

在这里插入图片描述
链接
点击链接有更详细的讨论过程。

参考:

[1]陶凯,吴定会.基于VMD-JAYA-LSSVM的短期风电功率预测[J/OL].控制工程:1-7[2021-02-25].https://doi.org/10.14107/j.cnki.kzgc.20190288.
[1]郑小霞,周国旺,任浩翰,符杨.基于变分模态分解和排列熵的滚动轴承故障诊断[J].振动与冲击,2017,36(22):22-28.

VMD(Variational Mode Decomposition)是一种用于信号分解的方法,可以将复杂的非平稳信号分解成一系列局部时频模态。而VMD分解中心频率法是基于VMD算法的一种拓展,用于提取信号中每个模态的中心频率。 在Python中,可以使用PyEMD库中的vmd方法实现VMD分解中心频率法。首先,需要安装PyEMD库,可以使用pip install pyemd命令进行安装。 在使用VMD分解中心频率法之前,我们需要导入必要的库数据。假设我们的信号数据存储在一个一维数组signal中。 ```python import numpy as np from PyEMD import EMD # 导入信号数据 signal = np.array([1, 2, 3, 4, 5, 4, 3, 2, 1]) ``` 接下来,我们可以使用EMD类中的vmd方法进行VMD分解,并获取每个模态的中心频率。在vmd方法中,我们可以设置一些相关参数,例如 scales 表示输入信号的尺度范围。 ```python # 使用 vmd 方法进行 VMD 分解 emd = EMD() imfs, centers = emd.vmd(signal, scales=[2, 4, 8]) ``` 得到imfscenters后,imfs是一个二维数组,存储了每个模态的具体数。centers是一个一维数组,存储了每个模态的中心频率。 最后,我们可以打印出每个模态的中心频率。 ```python # 打印每个模态的中心频率 for i, center in enumerate(centers): print(f"模态{i+1}的中心频率为:{center}") ``` 使用VMD分解中心频率法可以帮助我们分析信号的局部时频特性,对于一些非平稳信号的处理具有很大的帮助。
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hahahahah123456

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

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

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

打赏作者

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

抵扣说明:

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

余额充值