有意向获取代码,请转文末观看代码获取方式~
1 ICEEMDAN信号分解算法
ICEEMDAN 分解又叫改进的自适应噪声完备集合经验模态分解,英文全称为 Improved Complete Ensemble Empirical Mode Decomposition with Adaptive Noise。
ICEEMDAN (Improved Complete Ensemble EMD with Adaptive Noise) 是一种基于经验模态分解(Empirical Mode Decomposition, EMD)的信号分解方法。与传统的 EMD 方法不同,ICEEMDAN 引入了自适应噪声和完整集成策略,以提高分解的稳定性和准确性。在 ICEEMDAN 方法中,首先采用 EMD 将原始信号分解成多个固有模态函数(Intrinsic Mode Functions, IMF),然后通过自适应噪声算法去除每个 IMF 中的噪声,最后将去噪后的 IMFs 进行完整集成,得到分解后的信号。相比于传统的 EMD 方法,ICEEMDAN 采用自适应噪声算法去除噪声,可以减少分解过程中的模态混叠问题。此外,完整集成策略可以保证分解后的信号保留了原始信号的全部信息,提高了分解的准确性。 ICEEMDAN 分解方法在信号处理、图像处理、语音处理等领域得到了广泛应用,具有较高的分解效果和可靠性。
要想在 MATLAB 中使用 EMD 分解首先要安装 EMD 分解的 MATLAB 工具包。
关于简短的代码视频教程均可关注B站、小红书、知乎同名账号(Lwcah)观看教程~
EMD 工具包的安装:在 MATLAB 打开 package_emd 文件夹,运行 install_emd. M 以及 index_emd. M 两个函数如下图所示即可完成工具包的安装。
MATLAB 信号分解第五期-ICEEMDAN:
https://mbd.pub/o/bread/ZJaYlJxw
信号分解全家桶详情请参见:
https://mbd.pub/o/author-aWWWnHBsYw==/work
2 ARIMA时序预测算法
ARIMA(Autoregressive Integrated Moving Average)模型是一种基于时间序列分析的预测模型,可以用于分析和预测具有时间依赖性和随机性的数据。ARIMA 模型最初是由 Box 和 Jenkins 等人于 1976 年提出的,是一种广泛使用的时间序列模型,被用于生产和金融等领域的数据预测。 ARIMA 模型的核心思想是对时间序列数据进行差分,使得序列变得平稳,然后通过自回归(AR)和移动平均(MA)的组合来建立模型,并利用该模型进行预测。ARIMA 模型中的“AR”表示自回归,即当前数据与前面若干时刻的数据相关;“I”表示差分,即对数据进行差分使其平稳;“MA”表示移动平均,即当前数据与前面若干时刻的误差相关。 ARIMA 模型的建立过程包括模型识别、参数估计和模型检验三个步骤。在模型识别阶段,需要确定 ARIMA 模型的阶数和差分次数;在参数估计阶段,需要对模型进行参数估计;在模型检验阶段,需要对模型进行检验并判断模型的预测精度是否满足要求。 ARIMA 模型的优点是可以充分利用时间序列数据的历史信息进行预测,能够适应多种不同类型的时间序列数据,并且模型具有较好的解释性。但是 ARIMA 模型也有一些缺点,如对于非平稳的时间序列数据需要进行差分处理,同时模型的参数估计过程较为繁琐。
MATLAB | 时间序列预测 | ARIMA 预测模型:
https://mbd.pub/o/bread/ZJaXlJpw
5 种时序预测方案全家桶详情请参见:
https://mbd.pub/o/bread/ZJaXlJts
3 ICEEMDAN-ARIMA联合时序预测算法
接下来详细介绍一下最新的 ICEEMDAN-ARIMA 联合时序预测算法的原理和思路。
信号分解可以将原始数据分解为 N 层 imf 分量,然后本研究对每层的 imf 分量展开 ARIMA 时序预测,并将预测后的 imf 分量的预测值进行重构,即可得到 ICEEMDAN-ARIMA 联合时序预测值。
将该ICEEMDAN-ARIMA 联合时序预测值与单纯的 ARIMA 时序预测值分别与真实值进行对比,求其相关系数、均方根误差以及平均误差可以发现,ICEEMDAN-ARIMA 联合时序预测算法有较好的预测效果。究其原因不难发现,信号分解是将原始数据分解为不同频率的数据,也即每一层imf分量的频率大致相同,是具有较好的周期性和规律性的数据、因而当采用 ARIMA 时序预测算法对每一层 imf 分量展开预测的时候其预测效果会更加接近真值。
如下为简短的视频操作教程。
关于代码有任何疑问,均可关注公众号(Lwcah)后,后台回复关键词:微信号。
获取 up 的个人微信号,添加微信号后可以一起探讨科研,写作,代码等诸多学术问题,我们一起进步~