数字信号处理技术(二)变分模态分解(VMD)

您所在的位置:网站首页 vmd是什么职业 数字信号处理技术(二)变分模态分解(VMD)

数字信号处理技术(二)变分模态分解(VMD)

2023-06-17 01:12| 来源: 网络整理| 查看: 265

本文仅对变分模态分解(VMD)的原理简单介绍和重点介绍模型的应用。

1、VMD原理

变分模态分解(VMD)的原理在此不做详细介绍,推荐两个不错的解释参考连接 变分模态分解原理步骤 和VMD算法的介绍 官方源码

2、 VMD应用实战 2.1 简介

研究方向是时间序列数据预测,采用的数据都是时间序列数据,本次实验的数据集是海浪高度数据信息。

2.2 数据集

链接:https://pan.baidu.com/s/1H-g_FkGHqTJD9nTzbnnzog 提取码:604m 对数据进行预处理等操作,在此不做介绍。后面有时间,可以专门介绍一下预处理的操作方式。

2.3 实验

实验代码演示

import numpy as np import matplotlib.pyplot as plt from vmdpy import VMD import pandas as pd from scipy.fftpack import fft filename= r'D:\研究生文件\代码区\2020.10.12\41046\41046ban.csv' f = pd.read_csv(filename,usecols=[1]) plt.plot(f.values) alpha = 7000 # moderate bandwidth constraint tau = 0. # noise-tolerance (no strict fidelity enforcement) K = 8 # 3 modes DC = 0 # no DC part imposed init = 1 # initialize omegas uniformly tol = 1e-7 """ alpha、tau、K、DC、init、tol 六个输入参数的无严格要求; alpha 带宽限制 经验取值为 抽样点长度 1.5-2.0 倍; tau 噪声容限 ; K 分解模态(IMF)个数; DC 合成信号若无常量,取值为 0;若含常量,则其取值为 1; init 初始化 w 值,当初始化为 1 时,均匀分布产生的随机数; tol 控制误差大小常量,决定精度与迭代次数 """ u, u_hat, omega = VMD(f.values, alpha, tau, K, DC, init, tol) plt.figure() plt.plot(u.T) plt.title('Decomposed modes') fig1 = plt.figure() plt.plot(f.values) fig1.suptitle('Original input signal and its components') # 中心模态 # 根据中心频率可以求分解子序列的个数 # 保存子序列数据到文件中 for i in range(K): a = u[i,:] dataframe = pd.DataFrame({'v{}'.format(i+1):a}) dataframe.to_csv(r"D:\研究生文件\代码区\2020.10.12\41046\VMDban-%d.csv"%(i+1),index=False,sep=',')

注意:需要代码和数据,请私聊,完整版代码、分解思路和重构方式都可以讨论。

2.3 结果

分解的序列数据图像 在这里插入图片描述 原数据信息图片 在这里插入图片描述 分解后的单个序列图像 图像缩小后截图,效果看起来可能不会不太行,数据量有点大,不适合一个个截图。 在这里插入图片描述 中心模态的图像 在这里插入图片描述 保存的部分文件信息 在这里插入图片描述

3. 总结

VMD可以很好的解决EMD 中出现的模态混叠现象,所以现在很多研究方向转向了VMD,利用其优点和其他的模型进行结合使用。 VMD的子序列个数的选择,有些是根据模态混叠现象,有些是进行迭代寻优,有些是自己指定个数等等方式。

4 进一步思考

出于对模型的认知,现阶段来说,或许是信号分解方法中比较好的,可以利用其优点去进一步对其他模型进行优化。同时,变分模态分解本身也可以进行改进,比如说参数的选择和调整。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3