【MATLAB】 SSA奇异谱分析信号分解算法

有意向获取代码,请转文末观看代码获取方式~

1 基本定义

SSA奇异谱分析(Singular Spectrum Analysis)是一种处理非线性时间序列数据的方法,可以对时间序列进行分析和预测。

它基于构造在时间序列上的特定矩阵的奇异值分解(SVD),可以从一个时间序列中分解出趋势、振荡分量和噪声。

具体流程如下:

  1. 根据原始时间序列构建轨迹矩阵X XX。

  2. 对矩阵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​σi​Ui​ViT​ 。

  3. 按奇异值生成r rr个子矩阵:X i = σ i U i V i T X_i = \sigma_i U_i V_{i}^TXi​=σi​Ui​ViT​ 。

  4. 根据某一分组原则将子矩阵X i X_iXi​分为m mm个组。

  5. 对子矩阵X i X_iXi​进行对角均值化处理得到子序列。

  6. 对m mm个组中的子序列相加得到分组子序列。

以上就是SSA奇异谱分析信号分解算法的基本步骤。

2 出图效果

附出图效果如下:

Toeplitz 法计算的协方差矩阵 C

trajectory法计算的协方差矩阵C

特征值和特征向量示意图

前四大主成分

前四大重构成分

重建和原始时间序列对比

相关推荐
神仙别闹6 小时前
基于 C++ 实现(控制台)学生成绩管理系统
开发语言·c++
伞伞悦读6 小时前
【第36期】Python 目录与路径详解:pathlib、文件遍历、创建、复制、移动和删除风险
开发语言·python
有点。6 小时前
C++03阶段练习(练习题)
数据结构·算法·图论
周末也要写八哥8 小时前
经典算法实例:游戏中弱角色的数量(二)
算法
是Yu欸8 小时前
鸿蒙PC移植:2048 从网页小游戏到 AI 桌面应用
大数据·人工智能·算法·数据挖掘·openharmony·codex
鹿角片ljp8 小时前
KV Cache 解析
java·算法
liliangcsdn8 小时前
IVOL与偏度因子的对比测量分析
算法
2601_966949659 小时前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
m0_734571769 小时前
深入理解5g <十八>传输块tbsize的计算
开发语言·5g
threerocks10 小时前
Jev 入门第一课
算法