VMD分解代码,用于一维信号的分解
VMD分解用于信号分解,分解出不同的组合。
VMD分解用于信号分解,分解出不同的组合。
#. Time Domain 0 to T 时域0到T
T = 200000
fs = 1/T
t = np.arange(1,T+1)/T
freqs = 2*np.pi*(t-0.5-fs)/(fs)
#. center frequencies of components 组件的中心频率
#. Time Domain 0 to T 时域0到T
T = 200000
fs = 1/T
t = np.arange(1,T+1)/T
freqs = 2*np.pi*(t-0.5-fs)/(fs)
#. center frequencies of components 组件的中心频率
f_1 = 2
f_2 = 24
f_3 = 288
#. modes 模式
v_1 = (np.cos(2*np.pi*f_1*t))
v_2 = 1/4*(np.cos(2*np.pi*f_2*t))
v_3 = 1/16*(np.cos(2*np.pi*f_3*t))
# f = v_1 + v_2 + v_3 + 0.1*np.random.randn(v_1.size)
f=np.loadtxt('C:\\Users\\Administrator\\Desktop\\数据文件\\20201008009.txt')
#. some sample parameters for VMD VMD 的一些示例参数
alpha = 2000 # moderate bandwidth constraint 适度的带宽限制
tau = 0. # noise-tolerance (no strict fidelity enforcement) 噪声容限(没有严格的保真执行)
K = 6 # 3 modes 3种模式
DC = 0 # no DC part imposed 没有施加直流部分
init = 1 # initialize omegas uniformly 统一初始化 omegas
tol = 1e-7
#. Run VMD 运行 VMD
u, u_hat, omega = VMD(f, alpha, tau, K, DC, init, tol)
#. Visualize decomposed modes 可视化分解的模式
plt.figure(1)
plt.subplot()
plt.plot(f)
plt.title('Original signal')
plt.xlabel('time (s)')
plt.figure(2)
plt.subplot()
plt.plot(u.T)
plt.title('Decomposed modes')
plt.xlabel('time (s)')
plt.legend(['Mode %d'%m_i for m_i in range(u.shape[0])])
plt.tight_layout()
plt.show()