TinySysid · ERA — 设计说明¶
当前实现与参数口径¶
当前 ERA_SVD_THRESH 为 0.002f,即保留大于主奇异值 0.2% 的分量。这是奇异值幅值比阈值,不是累计能量阈值;能量涉及奇异值平方。下方历史流程图和代码注释中的 0.5% 保留供版本对照,不作为当前默认值。
ERA 的结果取决于相关函数、Hankel 尺寸、信噪比与所选阶数。“最高精度”和固定误差范围需要共同输入、参数及真实运行结果才能成立,不能由使用 SVD 单独推出。
ERA — Eigensystem Realization Algorithm:基于状态空间实现的 OMA 方法
基于 NExT(自然激励技术)+ Hankel 矩阵 + SVD + 平衡实现。从时域响应中提取状态空间模型,再从中识别模态参数。结果需结合输入质量、模型阶数和残差验证。
算法直觉¶
ERA 在做什么?¶
想象你在黑暗中投篮球。你只能看到球(输出),看不到你的手(输入)。你想知道篮筐的"振动特性"(结构模态)。
ERA 的做法: 1.NExT :把随机响应转换成类似"自由衰减"的信号(互相关函数) 2.Hankel 矩阵 :把时间序列排成一个块矩阵——矩阵的行数代表"过去",列数代表"未来" 3.SVD :分解这个矩阵,保留最大的奇异值——去掉噪声,保留系统的主要动态 4.** 平衡实现** :从 SVD 结果重建系统矩阵 \(A\),它的特征值就是系统的极点
ERA 的数值处理思路¶
- 使用 大矩阵 (Hankel 75×50)做 SVD,信息量大
- NExT 预处理提升了信噪比
- 平衡实现改善尺度处理,稳定性仍需验证
- Jacobi SVD 在嵌入式平台上收敛快(~15 sweeps)
算法流程¶
展开历史阈值示意(当前为 0.2%)
设计详解¶
1. Hankel 矩阵构造¶
Hankel 矩阵 H₀ 大小为 \((p \cdot n\_ch) \times (q \cdot n\_ch)\) = 75 × 50。
为什么 p=15, q=10? - 行列比 75/50 ≈ 1.5 → SVD 时列数决定最大可辨识阶数:\(\min(75, 50) = 50\) - 实际系统阶数远小于 50(5 通道系统最多 10 个模态 = 20 阶),所以选择后截断 - p,q 越大→包含更多时间信息→对噪声更鲁棒→内存更大
替代选项:
下表保留早期估计。矩阵尺寸按 5 通道计算;内存栏主要对应单个 Hankel 矩阵,不包含完整算法工作区。耗时和精度缺少完整构建与试验条件,不作为当前性能保证。 | p,q | Hankel 大小 | 内存 | 弱模态捕捉 | ESP32 耗时 | |-----|------------|------|-----------|-----------| | (10, 5) | 50×25 | 5 KB | 一般 | ~1s | | (15, 10) | 75×50 | 15 KB | 好 | ~2s | | (20, 15) | 100×75 | 30 KB | 更好 | ~3s | | (30, 20) | 150×100 | 60 KB | 最好 | ~5s (PSRAM) |
默认 (15,10) 在 5 通道 3000 点测试中频率误差 < 2%,阻尼误差 < ±2%。
2. Jacobi SVD(完整分解)¶
ERA 需要完整 SVD(所有奇异值/向量),因此用 Jacobi 而非幂迭代。
为什么 Jacobi 不是 QR/Householder?
| 方法 | 稳定性 | 收敛速度 | 嵌入式适用性 |
|---|---|---|---|
| Jacobi | 最稳定 | O(n³),~15-20 sweeps | ✓ 无动态分配,浮点友好 |
| QR | 需要 Householder | O(n³) | 依赖外部库 |
| 分治 | 复杂实现 | O(n²log n) | 递归栈开销大 |
Jacobi 的优势在于**无额外内存分配**和**秩判断自然**——Givens 旋转逐对清零,收敛过程中可中途停止。
3. 阶数选择¶
当前 0.2% 阈值按奇异值幅值比筛选;实际阶数随输入变化,需结合奇异值谱、稳定性和物理模态判断。
4. 平衡实现¶
ERA 的平衡实现简化为:截断 Hankel 的 SVD → 用 H₁ 构造系统矩阵 A。这是因为 ERA 假设系统是**可控且可观的**,平衡步骤在嵌入式平台上可略去。
关键参数¶
| 参数 | 默认 | 说明 |
|---|---|---|
| p (block rows) | 15 | Hankel 行块数 |
| q (block cols) | 10 | Hankel 列块数 |
| SVD 方法 | Jacobi | 全 SVD(非幂迭代) |
| 阶数选择 | > 0.2%·S[0] | 保留主要动态 |
何时使用 ERA¶
- 需要联合估计频率、阻尼与振型,并可承担 Hankel/SVD 开销
- 数据 ≥ 20s(推荐 60s)
- 作为最终确认方法