说明¶
SSI — Stochastic Subspace Identification:跨阶投票的阻尼专家
构建块 Toeplitz 矩阵,做 SVD 后利用位移不变性提取系统矩阵,对多个模型阶数做扫描投票。数据充足时阻尼最准。
算法直觉¶
核心思路:从相关函数建大矩阵¶
与 ERA 类似,SSI 也建一个大矩阵并做 SVD,但 SSI 用的是 Toeplitz 矩阵 (从互相关函数构建的对称块矩阵)。
关键创新是 跨阶投票 :
这避免了手动选择模型阶数的困难——哪阶的模态反复出现,哪阶就是真的。
Pairwise 变体(SSI-PW)¶
每次只取 2 个通道建 Toeplitz(2×2 块),对每个通道对都跑一遍,最后对所有候选投票。和 ITD 的"逐对 + 投票"思路一样——对弱模态更鲁棒。
SSI vs ERA¶
| ERA | SSI | |
|---|---|---|
| 矩阵类型 | Hankel | Toeplitz |
| SVD | 一次(定阶) | 多次(跨阶投票) |
| 阻尼精度 | 高 | ** 最高** (数据充足时) |
| 数据需求 | 中等 | 更多(≥ 60s 推荐) |
算法流程¶
1. 互相关函数 R[0..20, ch_i, ch_j]
2. 构建块 Toeplitz 矩阵 T[50×50]
3. 对每个阶数 n = 2, 4, ..., 16:
├─ T = U·Σ·Vᵀ
├─ O_n = U_n·√Σ_n(可观矩阵)
├─ A_n = O_up⁺·O_dn(位移不变性→系统矩阵)
└─ λ = eig(A_n) → 候选模态
4. 池化所有候选 → 聚类投票
5. 投票数最多的模态 → 最终结果
设计详解¶
1. Toeplitz vs Hankel¶
| ERA (Hankel) | SSI (Toeplitz) | |
|---|---|---|
| 矩阵结构 | 行 = 过去,列 = 未来 | 行 = 未来,列 = 过去(共轭对称) |
| SVD 后处理 | 截断→平衡实现→A | 截断→可观矩阵→位移不变性→A |
| 适用噪声 | 脉冲型 | 平稳随机 |
| 阻尼精度 | 高 | 最高(数据充足时) |
Toeplitz 矩阵的列向量本身就是互相关函数,更接近"统计平均",对平稳随机激励更自然。Hankel 处理单条实现(单个样本),对瞬态分量更敏感。
2. 跨阶投票设计¶
SSI 独特的优势是不需要手动选择模型阶数:
for (order n = 2; n <= 16; n += 2) {
O_n = U_n · √S_n; // 可观矩阵
C_n = O_n[0:n_ch, :]; // 输出矩阵(前 n_ch 行)
O_up = O_n[0:-n_ch, :]; // 去掉最后 n_ch 行
O_dn = O_n[n_ch:, :]; // 去掉前 n_ch 行
A_n = pinv(O_up) · O_dn; // 系统矩阵(位移不变性)
eig(A_n) → 候选模态;
}
所有候选池化 → 10% 频率容差聚类 → 出现次数最多的模态胜出。
为什么 SSI-PW(逐对变体)更鲁棒?
全局 SSI 建一个 n_ch × block_rows 的 Toeplitz,对 5 通道 = 60×60。SSI-PW 每次只建 2 通道的 Toeplitz = 24×24。小矩阵更稳定,弱模态不会被其他通道的强模态淹没。
3. SSI vs ERA 选型¶
| 条件 | 推荐 | 原因 |
|---|---|---|
| 数据短 (< 30s) | ERA | Hankel 对短数据更有效 |
| 数据充足 (> 60s) | SSI | Toeplitz 的统计平均更准 |
| 阻尼最重要 | SSI | 跨阶投票 + 统计平均 |
| 频率精度最重要 | ERA | 平衡实现直接输出 |
| ## 何时使用 SSI |
- 数据充足(≥ 60s,推荐 120s)
- 阻尼精度是关键需求
- 需要跨阶自动选择模型阶数