CEEMDAN分解及其可视化 python
CEEMDAN算法网上已经有很多了,原理自行百度吧,大多都是使用pyEMD包进行操作,本文也是使用此包:https://pypi.org/project/pyemd/本文着重讲可视化,因为其自带的可视化不怎么好看。废话不多说,上代码。from PyEMD import CEEMDAN# tips:记得设置全局变量 IImfs=[]def ceemdan_decompose(data):ceemda
·
CEEMDAN算法网上已经有很多了,原理自行百度吧,大多都是使用pyEMD包进行操作,本文也是使用此包:
https://pypi.org/project/pyemd/
本文着重讲可视化,因为其自带的可视化不怎么好看。
废话不多说,上代码。
from PyEMD import CEEMDAN
# tips:记得设置全局变量 IImfs=[]
def ceemdan_decompose(data):
ceemdan = CEEMDAN()
ceemdan.ceemdan(data)
imfs, res = ceemdan.get_imfs_and_residue()
plt.figure(figsize=(12,9))
plt.subplots_adjust(hspace=0.1)
plt.subplot(imfs.shape[0]+2, 1, 1)
plt.plot(data,'r')
for i in range(imfs.shape[0]):
plt.subplot(imfs.shape[0]+2,1,i+2)
plt.plot(imfs[i], 'g')
plt.ylabel("IMF %i" %(i+1))
plt.locator_params(axis='x', nbins=10)
# 在函数前必须设置一个全局变量 IImfs=[]
IImfs.append(imfs[i])
切记!如果需要输出res 可在函数最后return res,即如下:
# 生成res的分解
def ceemdan_decompose_res(data):
ceemdan = CEEMDAN()
ceemdan.ceemdan(data)
imfs, res = ceemdan.get_imfs_and_residue()
plt.figure(figsize=(12,9))
plt.subplots_adjust(hspace=0.1)
plt.subplot(imfs.shape[0]+3, 1, 1)
plt.plot(data,'r')
for i in range(imfs.shape[0]):
plt.subplot(imfs.shape[0]+3,1,i+2)
plt.plot(imfs[i], 'g')
plt.ylabel("IMF %i" %(i+1))
plt.locator_params(axis='x', nbins=10)
# 在函数前必须设置一个全局变量 IImfs=[]
IImfs.append(imfs[i])
plt.subplot(imfs.shape[0]+3, 1, imfs.shape[0]+3)
plt.plot(res,'g')
return res
运行代码
# ceemdan分解
IImfs=[]
res=ceemdan_decompose_res(np.array(elec_all_day_test).ravel())
IImfs即为imf的集合,res即为残差项,都可直接调用!
更多推荐
已为社区贡献1条内容
所有评论(0)