前言

在信号处理中,变分模态分解是一种信号分解估计方法。该方法在获取分解分量的过程中通过迭代搜寻变分模型最优解来确定每个分量的频率中心和带宽,从而能够自适应地实现信号的频域剖分及各分量的有效分离。


一、VMD 1是什么?

基本概念

  1. VMD(Variational mode decomposition)是一种自适应、完全非递归的模态变分和信号处理的方法;
  2. 优点:a自确定模态分解个数的优点;b降低复杂度高和非线性强的时间序列非平稳性;
  3. 自适应性:在根据实际情况确定所给序列的模态分解个数,随后的搜索和求解过程中可以自适应地匹配每种模态的最佳中心频率和有限带宽,并且可以实现固有模态分量(IMF)2的有效分离、信号的频域划分;
  4. 目标:得到给定信号的有效分解成分,最终获得变分问题的最优解;
  5. 适用:适用于非平稳性的序列,分解获得包含多个不同频率尺度且相对平稳的子序列;
  6. 核心思想:构建和求解变分问题。

求解步骤

首先,构造变分问题
假设原始信号 S 被分解为 K 个分量 μ ,保证分解序列为具有中心频率的有限带宽的模态分量,同时各模态的估计带宽之和最小,约束条件为所有模态之和与原始信号相等,则相应约束变分表达式为
在这里插入图片描述

然后,求解约束变分表达式
引入惩罚参数 α 、Lagrange乘法算子 λ ,将约束变分问题转变为非约束变分问题,得到增广Lagrange表达式为
在这里插入图片描述
求解式(2)鞍点

  • 初始化参数 μ1 、ω2 、λ1 和 nn 初值设为0;
  • 设置循环过程,令n = n + 1,μk 、ωk、λt 依据下式更新值;
  • 当分量满足式(6)时,求解完毕。在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

二、python实现

引入vmdpy库

变分模式分解python包

  • https://github.com/vrcarva/vmdpy下载项目,然后从项目文件夹运行“python setup.py install”
  • pip安装vmdpy

vmdpy中示例代码

import numpy as np
import matplotlib.pyplot as plt 
from vmdpy import VMD
#. Time Domain 0 to T  
T=1000fs=1/Tt=np.arange(1,T+1)/T
freqs=2*np.pi*(t-0.5-fs)/(fs)
#. center frequencies of components  
f_1=2
f_2=24
f_3=288
#. modes  
v_1=(np.cos(2*np.pi*f_1*t))
v_2=1/4*(np.cos(2*np.pi*f_2*t))
v_3=1/16*(np.cos(2*np.pi*f_3*t))
f=v_1+v_2+v_3+0.1*np.random.randn(v_1.size)
#. some sample parameters for VMD  
alpha=2000
# moderate bandwidth constraint  
tau=0.
# noise-tolerance (no strict fidelity enforcement)  
K=3
# 3 modes  
DC=0
# no DC part imposed  
init=1
# initialize omegas uniformly  
tol=1e-7
#. Run actual VMD code  
u,u_hat,omega=VMD(f,alpha,tau,K,DC,init,tol)

变分模态分解(VMD)-Python代码

python实例、含实验数据

三、补充

EMD库–pyemd

1.直接在settings中搜索pyemd添加,但速度十分慢
2.下载python模块pyhht,可实现经验模态分解功能,但是pyhht不适合python3版本
3.先下载emd包:emd

EMD与VMD区别

(1)分解 3

  • EMD分解的IMF分量个数不能人为设定,而VMD(Variational Mode Decomposition)则可以;
  • 但VMD也有弊端:分解过多,则信号断断续续,没有多少规律可言。

尝试后继续补充


  1. Dragomiretskiy, K.; Zosso, D. Variational mode decomposition. IEEE Trans. Signal Process. 2014, 62, 531–544. ↩︎

  2. Intrinsic Mode Functions,IMF的各个分量分别代表了原始信号中的各频率分量,并按照从高频到低频的顺序依次排列,参考文献https://blog.csdn.net/fengzhuqiaoqiu/article/details/101157527 ↩︎

  3. 信号处理——EMD、VMD的一点小思考 ↩︎

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐