Python 实现集成经验模态分解(EEMD)
Python 实现集成经验模态分解(EEMD)首先导入需要的包from PyEMD import EEMD第一次导入可能会报错,没有这个PyEMD 这个包,然后一般我们就会去安装输入命令:pip install pyemd。注意这是一个坑。应该使用的命令是:pip install EMD-signal至于为什么我也不甚清楚,写这篇博客的目的就是记下自己踩过的坑,不断填坑,以后少踩坑。下面正式开始进
·
Python 实现集成经验模态分解(EEMD)
首先导入需要的包
from PyEMD import EEMD
第一次导入可能会报错,没有这个PyEMD 这个包,然后一般我们就会去安装输入命令:pip install pyemd。
注意这是一个坑。
应该使用的命令是:pip install EMD-signal
至于为什么我也不甚清楚,写这篇博客的目的就是记下自己踩过的坑,不断填坑,以后少踩坑。
下面正式开始进行eemd分解
def signal_eemd(S):
# 这里是根据我的数据计算的时间
Ts = 1 / 20000
t = np.linspace(0, 1024 * Ts, num=1024)
eemd = EEMD()
eemd.trials = 500
eemd.noise_seed(12345)
eIMFs = eemd.eemd(S, t, -1)
nIMFs = eIMFs.shape[0]
eeIMFs = eIMFs[0:7, :]
# 因为我是批量处理很多信号,每个信号分解得到的分解信号数量不同,没办法统一操作,
# 所以这里只取了前7个信号分量
print(eIMFs.shape, eeIMFs.shape)
# Plot results
plt.figure(figsize=(12, 9))
plt.subplot(nIMFs + 1, 1, 1)
plt.plot(t, S, 'r')
for n in range(nIMFs):
plt.subplot(nIMFs + 1, 1, n + 2)
plt.plot(t, eIMFs[n], 'g')
plt.ylabel("eIMF %i" % (n + 1))
plt.locator_params(axis='y', nbins=5)
plt.xlabel("Time [s]")
plt.tight_layout()
plt.savefig('eemd_example', dpi=120)
plt.show()
plt.plot(t, eIMFs[0]+eIMFs[1]+eIMFs[1], 'g')
plt.show()
return eeIMFs.T
if __name__ == "__main__":
X_eeemd = (signal_eemd(S=X))
# 这个函数必须放在if __name__ == "__main__"下面执行才可以,我不知道为什么,
# 但是试了很多种其他的方法都失败了,只能老老实实的放在if __name__ == "__main__"下面执行
总结一下,一共两个坑,一个是安装PyEMD包时,一个时执行eemd分解函数时,希望可以帮到新手,新手真难,一步一个坑。
更多推荐
已为社区贡献2条内容
所有评论(0)