上篇博文已经讲述了VMD的分解机制,关于其中的参数,特别是分解层数如何确定的问题,这篇文章给出一个解决方法:最优变分模态分解(OVMD),利用中心频率法确定分解层数K,利用残差指数指标确定更新步长tau。

关于利用中心频率法确定分解层数的文章,无论国内还是国外都有较多的讲述。这里直接上代码。

tic
clc
clear allload('IMF1_1.mat')
x=IMF1_1;
t=1:length(IMF1_1);%--------- some sample parameters forVMD:对于VMD样品参数进行设置---------------
alpha = 2000;       % moderate bandwidth constraint:适度的带宽约束/惩罚因子
tau = 0.0244;          % noise-tolerance (no strict fidelity enforcement):噪声容限(没有严格的保真度执行)
K = 7;              % modes:分解的模态数
DC = 0;             % no DC part imposed:无直流部分
init = 1;           % initialize omegas uniformly  :omegas的均匀初始化
tol = 1e-7 ;
%--------------- Run actual VMD code:数据进行vmd分解---------------------------
[u, u_hat, omega] = VMD(x, alpha, tau, K, DC, init, tol);
figure;
imfn=u;
n=size(imfn,1); %size(X,1),返回矩阵X的行数;size(X,2),返回矩阵X的列数;N=size(X,2),就是把矩阵X的列数赋值给Nfor n1=1:nsubplot(n,1,n1);plot(t,u(n1,:));%输出IMF分量,a(:,n)则表示矩阵a的第n列元素,u(n1,:)表示矩阵u的n1行元素ylabel(['IMF' ,int2str(n1)],'fontsize',11);%int2str(i)是将数值i四舍五入后转变成字符,y轴命名
endxlabel('样本序列','fontsize',14,'fontname','宋体');%时间\itt/stoc;%----------------------计算中心频率确定分解个数K-----------------------------
#####################;%求矩阵列的平均值

average即为计算得出的中心频率,因为是要确定分解层数,所以需要我们从K=1开始,不断增加输入,每输入一个K值就进行一次计算。最后输入的K值是几,比如说最后K=5,或者K=11,这个不能确定,要看具体的处理结果。可以确定K值的依据为:一旦出现相似频率,此时的K值被确定为最佳K值。

通过上述代码计算,我们计算出不同k值下的中心频率的结果:

注意看,我们观察各分解情况下,各层分解最后的数值,可以看到,当分解层数为7的时候,中心频率已经稳定下来了,数值为0.457155,当分解层数为8时,中心频率的数值为0.457612,当分解层数为9时,中心频率为0.457802。所以确定分解的层数为7。

确定了VMD的分解层数之后,可以进一步确定另一个参数tau,这里只有确定了分解层数后,才能确定tau的具体数值。具体的方法为残差指数法(REI)。具体可以参考这个文献:ShortTerm Wind Speed Forecast With Low Loss of Information Based on Feature Generation of OSVDhttps://www.webofscience.com/wos/woscc/full-record/WOS:000474609400001

相应具体的公式为:

这里简要解释一下具体的含义,U表示各分解模态数,f表示原始信号,N表示信号的个数。所以这个公式可以简单理解为各分解模态加起来与原始信号相比,求最小,以最接近原始信号。下面直接上代码:

这个代码实际上,在确定tau的范围后,做一个循环,不断进行VMD分解,以求REI达到最小值。根据文献,tau的范围为0到1,其中步长为0.01。这里再次提醒一下,要先确定分解层数,比如上述代码中的分解层数为7.输入K=7后,进行下面的迭代运算。运算结果如下:

这里在tau中找到那个最小值,即为我们要选取的参数tau的数值。找到最小值的操作,可以在MATLAB中直接找寻,也可以将数值导入到EXCEL中进行寻找。

这里把tau直观化:

这样分解层数K和更新步长tau都找到了,将数值带入到VMD分解中,进行计算就OK了。

如果想进一步详细了解,可阅读上面的那篇文献。

VMD如何确定分解层数(一):最优变分模态分解(OVMD)---VMD分解的基础上确定分解层数和更新步长相关推荐

  1. 鲸鱼算法优化变分模态分解(VMD)包络熵和参数的特征提取及MATLAB代码实现

    目录 1 简介 2 变分模态分解VMD原理 3 鲸鱼优化算法优化VMD原理 3.1. 鲸鱼优化算法优化VMD原理及流程 3.2. 特征提取流程 4 优化效果 4.1. VMD各分量信号时域图 4.2. ...

  2. vmd变分模态分解程序matlab论坛_博士兼职辅导员论坛分享会第三期

    新一期经验分享报告会又来了!本次报告满满干货,快来看看都有些什么内容吧? 报告题目 齿轮箱关键零部件复合故障特征提取方法研究 报告摘要: 基于振动信号的复合故障特征提取技术一直以来都是旋转机械故障诊断 ...

  3. 变分模态分解 python_浅谈VMD(变分模态分解)

    学号:19011210554   姓名:袁博 [嵌牛导读]:好多人看着VMD看博客最想知道的就是这东西的应用和大概步骤原理,而具体原理算法不太感兴趣,而且也不太容易看懂.本文既然是浅谈,就讲解一下VM ...

  4. 利用智能算法优化参数的自适应变分模态分解,VMD实现混合储能系统的分频

    关键词:混合储能,VMD,麻雀搜索算法,遗传算法,混合储能容量配置优化,混合储能功率分配,利用智能算法优化参数的自适应变分模态分解,VMD实现混合储能系统的分频,高频分配给超级电容器,低频分配给蓄电池 ...

  5. matlab中使用VMD(变分模态分解)

    最近我们被客户要求撰写关于VMD(变分模态分解)的研究报告,包括一些图形和统计输出. 拨号音信号的变模分解 创建一个以4 kHz采样的信号,类似于拨打数字电话的所有键.将信号另存为MATLAB®时间数 ...

  6. linux环境vmd下载,VMD Linux版下载|VMD(变分模态分解程序) V1.9.3 Linux版 下载_当下软件园_软件下载...

    VMD Linux版是款适用于Linux操作系统的分子运动绘图分析模拟软件.它可以真实的模拟分析的运动场景,提供可视化的图形界面,帮助用户更好的理解分析变化,提高研究效率,操作简单,方便快捷,非常好用 ...

  7. 分解得到的时频域特征_【推荐文章】基于变分模态分解和广义Warblet变换的齿轮故障诊断...

    <机械传动>2018年  第42卷   第7期 文章编号:1004-2539(2018)07-0157-05 DOI:10.16578/j.issn.1004.2539.2018.07.0 ...

  8. 基于VMD变分模态分解算法Python程序

    基于VMD变分模态分解算法Python程序 可用于时间序列和其他领域 特色:1.基于Python 2.数据从excel文件中读取,更换简单 全部完整的代码,保证可以运行的代码看这里. http://t ...

  9. 变分模态分解_Android小部件示例中的模态对话框(弹出)

    变分模态分解 在此示例中,我们将看到如何在主屏幕中创建一个可以打开弹出对话框的Android小部件. 如您所知,Android Widgets是小型应用程序,基本上可以做两件事. 按下时启动新的活动, ...

  10. 数据挖掘基础知识-矩阵(分解)

    from: http://blog.csdn.net/u010140338/article/details/42191047 1. 矩阵知识: //特征值,行列式,秩,对称矩阵,单位矩阵,正定半正定, ...

最新文章

  1. 基于深度学习的口罩识别与检测PyTorch实现
  2. 【2022新书】机器学习基础
  3. 计算机二级考试常用代码,二级计算机VB考试常用代码(看完必过).doc
  4. NodeJs回调操作Promise化
  5. ES基础概念和集群概念
  6. 语言叮叮消息接口_五分钟学后端技术:如何学习Java工程师必知必会的消息队列...
  7. 亿级爆款背后,网易云音乐的生长之道
  8. bootbox.js中confirm()方法的使用
  9. js实现oss批量下载文件_前端实现批量打包下载文件
  10. 【超分辨率】Zoom to Learn, Learn to Zoom
  11. Pycharm提示No Python interpreter selected怎么解决
  12. 运维开发工程师的必备技能总结
  13. CSS预处理器——Sass、LESS和Stylus区别及联系
  14. Linux平台C语言解析HttpResponse(http协议)
  15. 生日快乐程序_推荐丨5款工具类小程序应用
  16. Android应用商店上架技巧(企业版)
  17. 自动驾驶介绍、应用、前景
  18. jquery将html转为pdf文件,HTML+CSS入门 jsPDF插件实现将HTML页面转换成PDF详解
  19. 《数据结构 C++ 语言描述》电子书下载 -(百度网盘 高清版PDF格式)
  20. date获取时间某年某月一共有多少天以及格式化天数,月份,年

热门文章

  1. 比较ole db/odbc/ado/ado.net/jdbc
  2. gpt分区安装的Win7激活工具
  3. 基于ssh人事考勤管理系统
  4. 四年级信息技术上册课本上类似于logo的绘图编程语言-GoC之不为人知的技巧
  5. 深入理解Linux网络技术内幕学习笔记第二章:一些重要的数据结构
  6. 获取他人ip的几种方法
  7. echarts实现svg地图
  8. 安卓QQ闪照解密秒存助手
  9. java int tmp_2016年Java认证考试题
  10. 动态心电图信息存储(三)