• 大小: 4KB
    文件类型: .zip
    金币: 2
    下载: 2 次
    发布日期: 2021-06-18
  • 语言: Python
  • 标签: python  VMD代码  

资源简介

本资源是根据网上开源的matlab代码(https://www.cnblogs.com/xingshansi/p/6511916.html)编写的python代码,直接运行main.py即可进行变分模态分解

资源截图

代码片段和文件信息

import numpy as np
from VMD import vmd
import matplotlib.pyplot as plt

if __name__ == ‘__main__‘:
    T = 1000
    fs = 1/T
    t = np.linspace(1 T num=T)/T
    freqs = 2*np.pi*(t - 0.5 -1/T)/fs
    cos = lambda x: np.cos(2 * np.pi * x * t )
    sin = lambda x: np.sin(2 * np.pi * x * t )
    # f = cos(2)+(1/4)*cos(24)+(1/16)*cos(288)+0.1*np.random.randn(len(t))
    f = 0.2*sin(45)+sin(50)+0.2*sin(55)
    f = [round(i4) for i in f]
    # print(type(f)f.shape)
    #parameters for VMD
    alpha = 2000       # moderate bandwidth constraint
    tau = 0            # noise-tolerance (no strict fidelity enforcement)
    K = 3             # 4 modes
    DC = 0             # no DC part imposed
    init = 1          # initialize omegas uniformly
    tol = 1e-7
    u u_hat omega = vmd(f alpha tau K DC init tol)  # u是分解后的信号
    # 画图显示
    plt.figure(figsize=(1.8 * 5 2.4 * 2))
    # 配置中文显示
    plt.rcParams[‘font.family‘] = [‘SimHei‘]  # 用来正常显示中文标签
    plt.rcParams[‘axes.unicode_minus‘] = False  # 用来正常显示负号
    plt.subplot(u.shape[0]+121)     #n_row  n_col
    plt.plot(t f )
    plt.title(u‘VMD分解‘)
    plt.grid()
    plt.subplot(u.shape[0]+122)
    plt.plot(freqs np.abs(np.fft.fft(f)))
    plt.title(u‘对应频谱‘)
    plt.grid()
    for i in range(u.shape[0]):
        plt.subplot(u.shape[0]+1 2 i*2+3)
        plt.plot(t u[i:])
        plt.grid()
        plt.subplot(u.shape[0]+1 2 i*2+4)
        plt.plot(freqs np.abs(np.fft.fft(u[i:])))
        plt.grid()
    plt.show()

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1626  2018-11-08 20:13  main.py
     文件        6110  2018-11-01 11:17  VMD.py

评论

共有 条评论