Skip to content

System Identification

TinySysid — Operational Modal Analysis on Edge Devices

Six output-only modal identification methods, all running on ESP32-S3. From fast frequency scanning to high-precision damping estimation, covering the complete OMA workflow.


Architecture

  • PP Peak Picking


    Averaged PSD → local peaks → mode shapes
    Fastest, no matrix operations
    Quick frequency scan

    Details →

  • FDD Frequency Domain Decomposition


    CPSD per bin → SVD → SV1 spectrum
    SVD separates signal/noise subspaces
    High-quality frequency + shapes

    Details →

  • EFDD Enhanced FDD


    FDD + IFFT + log decrement damping
    Adds damping to FDD
    When approximate damping is enough

    Details →

  • ITD Ibrahim Time Domain


    NExT + per-pair AR model
    Catches weak modes SVD methods miss
    Weak-mode detection

    Details →

  • ERA Eigensystem Realization


    NExT + Hankel SVD + balanced realization
    Most accurate overall
    Full freq/damping/shapes

    Details →

  • SSI Subspace Identification


    Toeplitz SVD + shift invariance + order voting
    Best damping (with enough data)
    High-quality damping estimation

    Details →


Processing Pipeline

All OMA methods share a common pipeline from raw data to modal parameters, diverging at the time/frequency branch.

                      ┌─ Welch averaged PSD ── peak detection ── freq + sqrt(PSD) shapes  ← PP
Data → Preproc → FFT ─┼─ Welch averaged CPSD ── per-bin SVD ── SV1 peaks ── freq + SVD shapes  ← FDD
                      │                                   └── IFFT + log decrement ── damping  ← EFDD
                      └─ NExT cross-corr ── system matrix ── eigenvalues ── poles → freq/damping + CPSD shapes  ← ITD / ERA / SSI

Design rationale: Frequency-domain methods (PP/FDD/EFDD) are fast and work with short data, but resolution is FFT-limited. Time-domain methods (ITD/ERA/SSI) use cross-correlation to extend effective data length, achieving higher accuracy at greater computational cost. Recommended: frequency-domain scan first, then time-domain refinement.


Use Case Index

  • Fast frequency scan

    PP, ~50 ms for 5ch×3000

  • Frequency + shapes

    FDD, SVD noise immunity

  • Frequencies with damping

    EFDD, approximate damping

  • Weak mode detection

    ITD, per-pair AR catches them

  • Highest overall accuracy

    ERA, best freq/damping/shapes

  • High-quality damping

    SSI, cross-order voting


Quick Start

#include "tiny_sysid.h"

float data[5 * 1500];  // 5 ch × 1500 samples
float fs = 50.0f;
int n_modes = 4;

tiny_sysid_result_t result;

tiny_sysid_identify(data, 5, 1500, fs, n_modes,
                    TINY_SYSID_METHOD_FDD, &result);

tiny_sysid_print_result(&result);

Data Length Requirements

Method Minimum Recommended
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   → quick frequency scan
2. FDD  → confirm frequencies + shapes
3. ERA  → refined freq/damping/shapes
4. ITD  → cross-validate weak modes
5. Consensus → final modes