由于只是为了写论文,因此这里对底层原理不多解释,只给出用法和结果
1.EMD算法
经验模态分解(Empirical Mode Decomposition,EMD)。
EMD是一种自适应的时间序列分析方法,可以将非线性和非平稳时间序列分解为若干个固有模态函数(Intrinsic Mode Functions,IMFs)和一个趋势项。
EMD算法及其变种(如CEEMDAN)在许多领域都有广泛的应用,以下是一些主要用途:
-
信号处理:
- 去噪:通过去除高频噪声或低频趋势,更清晰地观察信号的本质特性。
- 特征提取:IMFs可以作为信号的特征,用于分类、识别和模式匹配。
-
金融分析:
- 市场趋势分析:通过分析股票价格的IMFs,可以识别市场的不同波动模式,预测市场趋势。
- 风险管理:通过分析金融时间序列的IMFs,可以评估和管理金融风险。
-
数据挖掘和机器学习:
- 特征工程:IMF可以作为特征输入机器学习模型,提高模型预测性能。
-
图像处理:
- 图像去噪和增强:通过EMD分解图像,可以去除图像中的噪声,增强图像的视觉效果。
代码部分
这里我直接调用了PyEMD包中的EMD算法
结果展示
2.CEEMDAN算法
简要原理:想法可以类比于Boostrap
-
引入噪声:
- CEEMDAN算法首先向原始信号中添加白噪声。白噪声是一种具有均匀分布的随机信号,其功率谱是平坦的。
- 通过这种方式,算法可以在每次迭代中获得不同的分解结果。
-
重复分解:
- 对添加了噪声的信号进行EMD分解,得到一组IMFs。
- 这个过程会重复多次,每次添加的噪声都是随机生成的。
-
平均结果:
- 将所有分解得到的IMFs进行平均,以减少随机噪声的影响,提高分解结果的稳定性和准确性。
-
自适应噪声:
- 算法会根据分解结果调整噪声的强度,确保每次分解都能有效地提取信号的固有模态。
-
停止条件:
- 当达到一定的停止条件(如总能量阈值)时,算法停止迭代。这样可以避免过度分解,确保分解结果的合理性。
代码部分
关于算法的参数部分,我只给了数据和最多分解几个信号详细参数设置见官方文档
CEEMDAN — PyEMD 0.4.0 documentation
结果展示