1 基本定义
SSA奇异谱分析(Singular Spectrum Analysis)是一种处理非线性时间序列数据的方法,可以对时间序列进行分析和预测。
它基于构造在时间序列上的特定矩阵的奇异值分解(SVD),可以从一个时间序列中分解出趋势、振荡分量和噪声。
具体流程如下:
- 根据原始时间序列构建轨迹矩阵X XX。
- 对矩阵X进行奇异值分解:X = ∑ i = 1 r σ i U i V i T X=\sum_{i=1}^{r} \sigma_i U_i V_{i}^TX=∑i=1rσiUiViT 。
- 按奇异值生成r rr个子矩阵:X i = σ i U i V i T X_i = \sigma_i U_i V_{i}^TXi=σiUiViT 。
- 根据某一分组原则将子矩阵X i X_iXi分为m mm个组。
- 对子矩阵X i X_iXi进行对角均值化处理得到子序列。
- 对m mm个组中的子序列相加得到分组子序列。
以上就是SSA奇异谱分析信号分解算法的基本步骤。
2 出图效果
附出图效果如下:
Toeplitz 法计算的协方差矩阵 C
trajectory法计算的协方差矩阵C
特征值和特征向量示意图
前四大主成分
前四大重构成分
重建和原始时间序列对比
附视频教程操作:
3 代码获取
【MATLAB】 SSA奇异谱分析信号分解算法 开源 MATLAB 代码请转:
https://mbd.pub/o/bread/ZJ6bkphq
【MATLAB】5 种高创新性的信号分解算法:
https://mbd.pub/o/bread/ZJ6bkplp
【MATLAB】13 种通用的信号分解算法:
https://mbd.pub/o/bread/mbd-ZJWZmptt
【MATLAB】史上最全的 18 种信号分解算法全家桶:
https://mbd.pub/o/bread/ZJ6bkplq
关于代码有任何疑问,均可关注公众号(Lwcah)后,获取 up 的个人【微信号】,添加微信号后可以一起探讨科研,写作,代码等诸多学术问题,我们一起进步~