CEEMDAN算法及其可视化:Python实现与完整代码

作者:暴富20212024.01.17 12:49浏览量:20

简介:本文将介绍复杂经验模式分解(CEEMDAN)算法,并通过Python实现其可视化。我们将使用完整的代码和CSV文件来展示结果。

千帆应用开发平台“智能体Pro”全新上线 限时免费体验

面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用

立即体验

首先,我们需要导入所需的库和模块。我们将使用NumPy进行数学运算,matplotlib进行可视化,pandas读取CSV文件,以及pyecharts生成交互式图表。代码如下:

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import pandas as pd
  4. from pyecharts import options as opts
  5. from pyecharts.charts import Line

接下来,我们将定义CEEMDAN算法的函数。CEEMDAN是一种自适应信号处理方法,用于分解非线性、非平稳信号。代码如下:

  1. def CEEMDAN(x, imf_num):
  2. # 初始化
  3. imf_list = []
  4. res = x
  5. n = len(x)
  6. for i in range(imf_num):
  7. imf = np.zeros(n)
  8. while True:
  9. a = np.random.rand() * 0.05
  10. b = np.random.rand() * 0.05
  11. temp = np.zeros(n)
  12. temp[0] = x[0] + a * np.sin(2 * np.pi * b * i / n)
  13. for j in range(1, n):
  14. temp[j] = x[j] + a * np.sin(2 * np.pi * b * (i + j) / n) - a * np.sin(2 * np.pi * b * (i - j) / n)
  15. res = res - temp
  16. if np.max(np.abs(res)) < 1e-6:
  17. break
  18. imf_list.append(res)
  19. return imf_list

现在我们可以读取CSV文件,并将其输入到CEEMDAN函数中。假设CSV文件包含一个名为“data”的列,其中包含要分析的时间序列数据。代码如下:

  1. # 读取CSV文件
  2. data = pd.read_csv('data.csv')['data']
  3. # 应用CEEMDAN算法
  4. imfs = CEEMDAN(data, 5) # 假设我们想要提取5个固有模式函数(IMF)

接下来,我们将使用matplotlib和pyecharts来可视化结果。代码如下:

  1. # 可视化原始数据和IMFs
  2. plt.figure(figsize=(12, 6))
  3. plt.plot(data, label='Original Data')
  4. for i, imf in enumerate(imfs):
  5. plt.plot(imf, label=f'IMF {i+1}')
  6. plt.legend()
  7. plt.show()
article bottom image

相关文章推荐

发表评论