Python 实现集成经验模态分解(EEMD)

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分解函数时,希望可以帮到新手,新手真难,一步一个坑。

  • 31
    点赞
  • 171
    收藏
    觉得还不错? 一键收藏
  • 49
    评论
经验模态分解(Empirical Mode Decomposition,简称EMD)是一种非线性时频分析方法,用于将复杂的信号分解成多个本质模态函数(Intrinsic Mode Function,简称IMF)。IMF是指在时域上具有自适应调频特性,且频宽随着时间的推移逐渐变窄的函数。EMD方法通过迭代的方式,将信号中具有不同尺度的振动分离出来。 集合经验模态分解(Ensemble Empirical Mode Decomposition,简称EEMD)是对EMD方法的改进,解决了EMD方法在处理具有较高噪声水平的信号时的不稳定性问题。EEMD将信号分解成多个IMF的集合,在每次迭代时,对原信号加入噪声并进行分解,然后对多次分解的IMF进行平均,以减小噪声的影响。这样可以提高信号的分解稳定性,并且能够更好地处理具有较高噪声水平的信号。EEMD的具体步骤包括:1. 对原始信号加入随机噪声;2. 使用EMD方法对带噪声的信号进行分解;3. 重复步骤1和2多次,得到多组IMF;4. 对每组IMF进行平均,得到最终分解结果。 为了方便使用EEMD方法进行信号分解,可以使用EEMD工具包。EEMD工具包是针对EEMD方法进行实现的软件工具集合。它提供了一系列函数和算法,可以方便地进行信号的EEMD分解,并且可以进行参数的调节。使用EEMD工具包,可以通过简单的调用函数的方式,将信号分解成多个IMF,以便进行进一步的时频分析和信号处理。EEMD工具包通常提供了完整的文档和示例代码,使用户可以快速上手和理解EEMD方法的原理和应用。 总而言之,EEMD是一种对EMD进行改进的信号分解方法,可以更稳定地处理具有噪声的信号。EEMD工具包则是提供了方便易用的软件工具,用于实现EEMD方法,进行信号的分解和分析。
评论 49
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值