数字信号处理技术(二)变分模态分解(VMD) |
您所在的位置:网站首页 › vmd是什么职业 › 数字信号处理技术(二)变分模态分解(VMD) |
本文仅对变分模态分解(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 结果分解的序列数据图像 VMD可以很好的解决EMD 中出现的模态混叠现象,所以现在很多研究方向转向了VMD,利用其优点和其他的模型进行结合使用。 VMD的子序列个数的选择,有些是根据模态混叠现象,有些是进行迭代寻优,有些是自己指定个数等等方式。 4 进一步思考出于对模型的认知,现阶段来说,或许是信号分解方法中比较好的,可以利用其优点去进一步对其他模型进行优化。同时,变分模态分解本身也可以进行改进,比如说参数的选择和调整。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |