跳转至

类EMD的“信号分解方法”及MATLAB实现(第四篇)——VMD (VARIATIONAL MODE DECOMPOSITION)

Info

原文地址:🔗 专栏:信号处理有关的那些东东

本文为学习笔记。

VMD(变分模态分解)的概念

VMD(Variational Mode Decomposition)即变分模态分解,与2014年由Dragomiretskiy等人提出,虽然它也叫模态分解,但是和之前介绍过的EMD、EEMD、CEEMD、CEEMDAN这些模态分解方法在原理上有本质区别。VMD的整体思路为:

该方法假设任何的信号都是由一系列具有特定中心频率、有限带宽的子信号组成(即IMF)。 以经典维纳滤波为基础,通过对变分问题进行求解,得到中心频率与带宽限制,找到各中心频率在频域中对应的有效成分,得到模态函数。其模型构建涉及到维纳滤波、希尔伯特变换和解析信号等知识点。 VMD 的分解过程就是变分问题的求解过程,其算法主要包括变分问题的构造和变分问题的求解。VMD的求解过程主要包含两点约束:(1)要求每个模态分量中心频率的带宽之和最小;(2)所有的模态分量之和等于原始信号。

关于内涵模态分量

不同于黄锷先生提出的内涵模态分量(IMF)概念,VMD算法重新定义了约束条件更为严格的有限带宽的本征模态函数,该内涵模态分量被定义为**调幅调频的分量模态函数**,数学表达式为:

\[ u_k(t) = A_k(t) \cos(\phi_k(t)) \]

\(A_k(t)\)为信号\(u_k(t)\)的包络幅值,\(\phi_k(t)\)为瞬时相位。需要注意该函数表征的分量也是同样满足EMD的约束条件的。

变分问题构造

由于变分问题涉及到泛函的相关知识,推导过程比较复杂,这里只介绍思路,对于详细过程有兴趣的同学可以直接看方法提出者的论文原文[1]

所谓变分问题,就是求泛函的极值。在VMD中,泛函指的是VMD约束变分模型,而要求的极值,就是“每个模态分量中心频率的带宽之和最小”。

过去常遇到的是求函数极值,但有时我们需要对自变量也是函数的特殊函数求极值。

这种特殊函数即“函数的函数”,称为泛函,求泛函的极值问题称为变分问题。

构造出来的VMD约束变分模型是这样的[1]

\[\begin{aligned}\min_{\{u_k\},\{\omega_k\}}\left\{\sum_k\left\|\partial_t\left[\left(\delta(t)+\frac{j}{\pi t}\right)*u_k(t)\right]e^{-j\omega_kt}\right\|_2^2\right\}\\\mathrm{s.t.}\quad\sum_ku_k=f\end{aligned}\]

上式表示的,就是求取“每个模态分量中心频率的带宽之和最小”时的模态函数\(u_k(t)\)和中心频率\(\omega_k\)

变分问题求解

上式的求解过程应用到了比较多的数学工具,包括二次惩罚项、拉格朗日算子以及增广拉格朗日函数等等,详细过程[1]比较复杂,同样不展开说了。

VMD的显著特点

VMD思路

VMD方法是一种非递归变分模式的信号分解方法,其整体框架为一个变分问题。

VMD的独特优势

(1)可以指定想要得到的模态数。

(2)通过VMD方法分解出来的IMF都具有独立的中心频率,并且在频域上表现出稀疏性的特征,具备稀疏研究的特质。

(3)在对IMF求解过程中,通过镜像延拓的方式避免了类似EMD分解中出现的端点效应。

(4)有效避免模态混叠(K值选取合适的情况下)。

VMD的重要参数——模态数K

在使用EMD方法时,有很多同学就经常问要怎样指定分解出的IMF数。VMD方法就可以很好地满足这个要求,因为VMD的一个明显特点,就是信号在做VMD分解前,需要先设定模态分量的个数K。但是成也萧何败也萧何,某些应用场合下可指定IMF数属于优点,但是对于某些不预知信号隐含模态数的场景,怎样设置这个K值反而会让人挠头。

若设定的K小于待分解信号中有用成分的个数(欠分解),会造成分解不充分,导致模态混叠;若设定的K值大于待分解信号中有用成分的个数(过分解),就导致产生一些没有用的虚假分量。因此,K值的确定对于VMD就非常重要。

至于如何确定K值,可以从以下几个方面考虑:

(1)某些场景下可以预知模态数目,比如对于某齿轮箱振动数据,通过分析可知信号数据中主要包含齿轮的啮合频率和主轴转动频率,那么K可以设置为2。

(2)可以通过K值从小到大逐个尝试,并结合分解结果分析确定K值:随着K值增大各主要频率段数据能分布到不同IMF分量中,并且没有产生虚假分量,此时K值就是比较合适的。这个方法虽然比较高效且靠谱,但是不便于写到论文中,这就需要用到方法(3)了。

(3)可以使用一些辅助算法,比如使用峭度最大原理、能量差值原则等,或者结合一些寻优算法对K值(也可以同时对α)寻优。

VMD的重要参数——惩罚系数α

VMD 分解的过程中,预设的 K 值决定着 IMF 分量的个数,惩罚系数 α 决定着 IMF 分量的带宽。惩罚系数越小, 各 IMF 分量的带宽越大,过大的带宽会使得某些分量包含其他分量信号;α值越大,各IMF分量的带宽越小,过小的带宽是使得被分解的信号中某些信号丢失。该系数常见取值范围为1000~3000。

VMD的另一个参数——收敛容差tol

是优化的停止准则之一,即在连续两次迭代中,当向 IMF 收敛的绝对平均平方改进小于 tol时,优化停止。通常可以取 1e-6~5e-6。

VMD的应用案例

~

关于封装函数

~

结语