跳转至

系统识别

TinySysid — 边缘设备上的运行模态分析

六种 output-only 模态识别方法,全部在 ESP32-S3 上运行。从快速频率扫描到高精度阻尼估计,覆盖 OMA 的完整工作流。


架构速览

  • PP 峰值拾取


    平均 PSD → 局部峰值 → 振型
    速度最快,无矩阵运算
    适合快速频率扫描

    详情 →

  • FDD 频域分解


    每频点 CPSD → SVD → SV1 谱
    SVD 自动分离信号/噪声子空间
    频率 + 振型精度高

    详情 →

  • EFDD 增强频域分解


    FDD + IFFT + 对数衰减阻尼
    在 FDD 基础上增加阻尼估计
    适合需近似阻尼的场景

    详情 →

  • ITD 时域法


    NExT + 逐通道对 AR 模型
    能检出 SVD 方法遗漏的弱模态
    适合弱激发模态检测

    详情 →

  • ERA 特征系统实现


    NExT + Hankel SVD + 平衡实现
    综合精度最高
    频率/阻尼/振型全套输出

    详情 →

  • SSI 子空间识别


    Toeplitz SVD + 位移不变性 + 跨阶投票
    阻尼最准(数据充足时)
    适合高质量阻尼估计

    详情 →


处理流水线

所有 OMA 方法共享一个从原始数据到模态参数的通用流水线,区别在于时域/频域分支的选择。

                      ┌─ Welch 平均 PSD ── 峰值检测 ── 频率 + sqrt(PSD) 振型  ← PP
数据 → 预处理 → FFT ──┼─ Welch 平均 CPSD ── 每频点 SVD ── SV1 谱峰值 ── 频率 + 左奇异向量振型  ← FDD
                      │                              └── IFFT + 对数衰减 ── 阻尼  ← EFDD
                      └─ NExT 互相关 ── 系统矩阵 ── 特征值 ── 极点 → 频率/阻尼 + CPSD 振型  ← ITD / ERA / SSI

设计思路:频域方法(PP/FDD/EFDD)计算快、适合短数据,但分辨率受限于 FFT 长度;时域方法(ITD/ERA/SSI)利用互相关函数扩展有效数据长度,精度更高但计算量大。建议先用频域方法扫描,再用时域方法精化


场景索引

  • 快速频率扫描

    PP ,50 ms 完成 5ch×3000 点

  • 频率 + 振型确认

    FDD ,SVD 抗噪,振型可靠

  • 含阻尼的频率估计

    EFDD ,近似阻尼

  • 弱模态检测

    ITD ,逐对 AR 不遗漏

  • 最高综合精度

    ERA ,频率/阻尼/振型最准

  • 高质量阻尼

    SSI ,跨阶投票,数据充足时最可靠


快速开始

#include "tiny_sysid.h"

float data[5 * 1500];  // 5 channel × 1500 samples
float fs = 50.0f;      // sampling rate
int n_modes = 4;       // extract 4 modes

tiny_sysid_result_t result;

// 调用任意方法
tiny_sysid_identify(data, 5, 1500, fs, n_modes,
                    TINY_SYSID_METHOD_FDD, &result);

// 打印结果
tiny_sysid_print_result(&result);

数据长度需求

方法 最少 推荐
PP, FDD 500 (10s) 1500 (30s)
EFDD 1000 (20s) 3000 (60s)
ITD 500 (10s) 1500 (30s)
ERA 1000 (20s) 3000 (60s)
SSI 3000 (60s) 6000 (120s)

推荐工作流

1. PP   → 快速频率扫描
2. FDD  → 确认频率 + 振型
3. ERA  → 精确频率/阻尼/振型
4. ITD  → 交叉验证弱模态
5. 共识投票 → 最终模态

相关