from matplotlib import pyplot as plt
import numpy as np
from scipy.signal import hilbert
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
#vmd分解类
class VMD:
def __init__(self, K, alpha, tau, tol=1e-7, maxIters=200, eps=1e-9):
"""
:param K: 模态数
:param alpha: 每个模态初始中心约束强度
:param tau: 对偶项的梯度下降学习率
:param tol: 终止阈值
:param maxIters: 最大迭代次数
:param eps: eps
"""
self.K =K
self.alpha = alpha
self.tau = tau
self.tol = tol
self.maxIters = maxIters
self.eps = eps
def __call__(self, f):
N = f.shape[0]
# 对称拼接
f = np.concatenate((f[:N // 2][::-1], f, f[N // 2:][::-1]))
T = f.shape[0]
t = np.linspace(1, T, T) / T
omega = t - 1. / T
# 转换为解析信号
f = hilbert(f)
f_hat = np.fft.fft(f)
vmd 矩阵分解实战
猜你喜欢
转载自blog.csdn.net/qq_38735017/article/details/134920306
今日推荐
周排行