跳转至

说明

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)

算法流程

1. NExT(自然激励技术)
   └─ 互相关函数 → 类似自由衰减

2. 构建 Hankel 矩阵
   ├─ H₀: [p·n_ch × q·n_ch](默认 p=15, q=10)
   └─ H₁: 延迟 1 步

3. SVD: H₀ = U·Σ·Vᵀ
   └─ 选择阶数 n(σ[k] > 0.5%·σ[0])

4. 平衡实现
   ├─ A = Σ⁻¹/²·Uᵀ·H₁·V·Σ⁻¹/²
   └─ λ = eig(A) → 离散极点

5. 离散 → 连续模态参数
   └─ 频率、阻尼、振型

设计详解

1. Hankel 矩阵构造

#define ERA_P        15    // 块行数
#define ERA_Q        10    // 块列数

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 越大→包含更多时间信息→对噪声更鲁棒→内存更大

替代选项: | 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(完整分解)

static int jacobi_svd(float *A, int m, int n, float *S, float *Vt, int max_iter)

ERA 需要完整 SVD(所有奇异值/向量),因此用 Jacobi 而非幂迭代。

为什么 Jacobi 不是 QR/Householder?

方法 稳定性 收敛速度 嵌入式适用性
Jacobi 最稳定 O(n³),~15-20 sweeps ✓ 无动态分配,浮点友好
QR 需要 Householder O(n³) 依赖外部库
分治 复杂实现 O(n²log n) 递归栈开销大

Jacobi 的优势在于无额外内存分配秩判断自然——Givens 旋转逐对清零,收敛过程中可中途停止。

3. 阶数选择

// 奇异值比阈值:保留 σ[k] > 0.5%·σ[0] 的所有阶数
#define ERA_SVD_THRESH 0.002f

0.5% 意味着至少保留能量为主奇异值 0.5% 的所有模态。对 5 通道系统,这通常保留 8-12 阶(对应 4-6 个模态),远超所需的 4 个模态。

4. 平衡实现

// A = Σ⁻¹/² · Uᵀ · H₁ · V · Σ⁻¹/²
// 无需完整实现:直接从 SVD 结果构造 A

ERA 的平衡实现简化为:截断 Hankel 的 SVD → 用 H₁ 构造系统矩阵 A。这是因为 ERA 假设系统是可控且可观的,平衡步骤在嵌入式平台上可略去。

关键参数

参数 默认 说明
p (block rows) 15 Hankel 行块数
q (block cols) 10 Hankel 列块数
SVD 方法 Jacobi 全 SVD(非幂迭代)
阶数选择 > 0.5%·S[0] 保留主要动态

何时使用 ERA

  • 需要最高综合精度(频率/阻尼/振型)
  • 数据 ≥ 20s(推荐 60s)
  • 作为最终确认方法