2020-06-16 VMD原理及其在R语言中的应用示例

        变分模态分解(variational mode decomposition,VMD)是一种新的信号分解估计方法,其整体框架是变分问题,使得每个模态的估计带宽之和最小,其中假设每个‘模态’是具有不同中心频率的有限带宽,为解决这一变分问题,采用了交替方向乘子法,不断更新各模态及其中心频率,逐步将各模态解调到相应的基频带,最终各个模态及相应的中心频率被一同提取出来。相比 EMD 和 LMD 的递归‘筛选’模式,VMD 将信号分解转化非递归、变分模态分解模式,并具有坚实的理论基础,其实质是多个自适应维纳滤波组,表现出更好的噪声鲁棒性。

        VMD 的分解过程是变分问题的求解过程,该算法可分为变分问题的构造和求解,其中涉及了 3个重要概念:经典维纳滤波、希尔伯特变换和频率混合。

1. 受约束的变分问题如下:


2. 变分问题的求解:

        引入二次惩罚因子α和拉格朗日乘法算子λ(t),将约束性变分问题变为非约束性变分问题:

采 用 了 乘 法 算 子 交 替 方 向 法(alternate direction method of multipliers)ADMM 解决以上变分问题,通过交替更新计算,求扩展拉格朗日表达式的‘鞍点’:

最终可整理为:


时间复杂度:



关于VMD(Variational Mode Decomposition),具体原理可以参考其论文   :

K. Dragomiretskiy and D. Zosso, "Variational Mode Decomposition," in IEEE Transactions on Signal Processing, vol. 62, no. 3, pp. 531-544, Feb.1, 2014, doi: 10.1109/TSP.2013.2288675.

附上VMD源程序的MATLAB code

在R软件中使用VED的代码:

R code:

rm(list = ls())

# install.packages("vmd")

library(vmd)

library(R.matlab)

ff <- "E:/office/......../data"

ff <- paste0(ff,"/", list.files(ff)[2])

mat<-readMat(ff)# str(mat)

m.u<-as.vector(mat$CH1)

m.i<-as.vector(mat$CH2)

  plot.ts(m.i)

signal <- m.i

plot.ts(signal);rm(m.u,m.i,ff,mat)

依据傅里叶分析可知,这段数据包含了4个频谱,因此选择K=4+1

#tau=梯度步长

k=5; v = vmd(signal,alpha=length(signal),tau=0,DC=F,init=0,tol=1e-6,K=k,orderModes=TRUE)

# #To Data Frame

# df = as.data.frame(v)# head(df)

# #Plot Results# plot(v)

plot(v,facet='bymode',scales='free')


# #List of Results

l = v$getResult()  #  names(l)

#  u      - the collection of decomposed modes

#  u_hat  - spectra of the modes

#  omega  - estimated mode center-frequencies

# # compute HZ

ff <- 10^4

matplot(l$omega*ff,type = "l",ylab = "HZ")

text(dim(l$omega)[1],l$omega[dim(l$omega)[1],]*ff,

    labels = round(l$omega[dim(l$omega)[1],],3)*ff,col = 1)


    可见包含了50HZ的基波,3、5、7次谐波和噪声数据(收敛的不够)

#Spectral Decomposition

v$plot.spectral.decomposition()


信息重构:

matplot(cbind(l$u[,1],rowSums(l$u[,2:4]),signal),type = "l",col = c(3,4,2) ,ylab = "amplitude")



matplot(cbind(rowSums(l$u[,1:4]),signal),type = "l",col = c(4,2) ,ylab = "amplitude")

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342