跳转至

随机子空间识别(SSI)

本页对 SHM 路线图 中的 2.8 SSI 做展开。随机子空间识别(Stochastic Subspace Identification, SSI) 是结构健康监测中最常用的 仅输出 模态识别方法之一:在 不测量激励 的前提下,从多通道响应时间序列估计 固有频率、阻尼比与振型。SSI 属于 子空间方法 中面向「随机激励、仅输出」的一支,有两种常见实现:SSI-COV(协方差驱动)与 SSI-DATA(数据驱动),二者最终得到同一类状态空间模型与模态参数,区别主要在数据使用方式与数值实现。


1. 动机与背景

1.1 为什么需要「仅输出」识别?

  • 环境激励不可测:大型结构(桥梁、建筑、风机)的激励来自风、交通、地脉动等,难以施加或测量已知力。传统模态分析依赖已知输入(锤击、激振器),在现场往往不可行。
  • 运行状态:关心的是结构在 真实服役 下的动力特性,只有响应传感器(加速度、应变等)时,只能 仅凭输出时间序列 做识别。
  • 目标:在不已知、不测量输入的前提下,从多通道输出 \(\mathbf{y}[k]\) 估计 固有频率 \(f_r\)、阻尼比 \(\zeta_r\)、振型 \(\mathbf{\phi}_r\),即 运行模态分析(OMA)

1.2 为什么用状态空间模型?

  • 统一框架:离散 LTI 状态空间 \((\mathbf{A},\mathbf{C})\) 同时描述动力演化与观测;模态参数由 \(\mathbf{A}\) 的特征值与 \(\mathbf{C}\) 和特征向量给出。
  • 与随机激励相容:将未知激励与量测噪声视为 白噪声,则「白噪声驱动 + 仅观输出」正好对应状态方程 (1);系统仍为 LTI,便于分析。
  • 可辨识性:在可观性成立时, 输出的二阶统计(多滞后协方差)\((\mathbf{A},\mathbf{C})\) 唯一决定(差一相似变换),因此可从协方差或数据块 反推 可观性子空间,再恢复 \(\mathbf{A},\mathbf{C}\)。要点如下:
  • 二阶统计:即多滞后协方差 \(\mathbf{R}_\ell = \mathbb{E}[\mathbf{y}[k+\ell]\mathbf{y}[k]^T]\);在白噪声驱动下,整条序列由 \((\mathbf{A},\mathbf{C})\) 与噪声协方差唯一确定。
  • 差一相似变换:状态空间表示不唯一(换元 \(\mathbf{x}'=\mathbf{T}\mathbf{x}\) 不改变输入–输出关系),故只能辨识到等价类; 模态参数(特征值、振型方向)在相似变换下不变,因而是唯一确定的。
  • 为何要可观性:若不可观,部分状态方向永不体现在输出里,仅凭输出无法恢复;可观性保证「状态在多步输出中可见」,可观性矩阵列满秩,其列空间可从数据恢复。
  • 链条\(\mathbf{R}_\ell = \mathbf{C}\mathbf{A}^{\ell-1}\mathbf{G}\) → 块 Toeplitz \(\mathbf{T}=\mathcal{O}_i\mathcal{C}_i\)\(\mathbf{T}\) 的行空间 = \(\mathcal{O}_i\) 的列空间 → SVD 得可观性子空间 → 移位关系得 \(\mathbf{A},\mathbf{C}\)

2. 核心数学原理

2.1 一句话 + 两条根本原理

一句话可观性子空间可以从输出数据中恢复出来。

两条根本原理

  1. 数据具有低秩子空间结构:由输出构成的块矩阵(协方差的块 Toeplitz,或数据的块 Hankel/投影)在理想情况下 秩为 \(n\)(系统阶次),其行/列空间由可观性矩阵张成;用 SVD 即可从数据中提取可观性子空间的一组基。
  2. 移位不变性:可观性矩阵的块行满足「下一块行 = 当前块行 × \(\mathbf{A}\)」。得到可观性子空间的基后,利用该移位关系可 唯一恢复 \(\mathbf{A}\)\(\mathbf{C}\)

合起来: 先由数据得到可观性子空间(原理 1),再从移位关系得到 \(\mathbf{A},\mathbf{C}\)(原理 2)

2.2 为什么「输出协方差由可观性矩阵唯一决定」?

多滞后协方差在模型 (1) 与平稳、白噪声假设下可写成

\[ \mathbf{R}_\ell = \mathbf{C} \mathbf{A}^{\ell-1} \mathbf{G}, \quad \ell \geq 1, \]

其中 \(\mathbf{G}=\mathbb{E}[\mathbf{x}[k+1]\mathbf{y}[k]^T]\) 为状态–输出互协方差。因此 \(\mathbf{R}_\ell\) 只通过「\(\mathbf{C}\mathbf{A}^{\ell-1}\)」与系统联系,而 \(\mathbf{C},\mathbf{C}\mathbf{A},\ldots\) 正是可观性矩阵 \(\mathcal{O}_i\) 的块行。将 \(\mathbf{R}_1,\mathbf{R}_2,\ldots\) 排成块 Toeplitz \(\mathbf{T}_{1|i}\) 后,每一块行都是 \(\mathcal{O}_i\) 的对应块行的线性组合(系数来自 \(\mathbf{G}\)),故 \(\mathbf{T}_{1|i} = \mathcal{O}_i \mathcal{C}_i\)\(\mathcal{C}_i\)\(\mathbf{G}\) 等构成)。于是 \(\mathbf{T}_{1|i}\)行空间 = \(\mathcal{O}_i\)列空间(在 \(\mathcal{C}_i\) 行满秩时)。因此:可观性矩阵唯一决定了该行空间;反过来,对 \(\mathbf{T}_{1|i}\) 做 SVD 可唯一恢复可观性子空间。数据驱动形式(块 Hankel + 斜投影)在理论上也给出同一可观性子空间。

2.3 子空间方法的本质

子空间方法:不直接拟合 \((\mathbf{A},\mathbf{C})\),而是先从数据构造块矩阵(Hankel/Toeplitz 等),用 SVD 或投影 + SVD 提取 可观性子空间的一组基,再利用可观性矩阵的 移位结构 从该基恢复 \(\mathbf{A},\mathbf{C}\)。即: 先找子空间的基,再从基恢复状态空间参数

确定性子空间 vs 随机子空间(SSI)

对比项 确定性(如 ERA) 随机(SSI)
输入 已知、可测 未知,视为白噪声
数据 输入–输出或脉冲响应 仅输出或输出协方差
块矩阵 多由 Markov 参数构成块 Hankel 块 Toeplitz(协方差)或块 Hankel + 投影
驱动侧 可控性矩阵 \([\mathbf{B},\mathbf{A}\mathbf{B},\ldots]\) 可控性型 \([\mathbf{G},\mathbf{A}\mathbf{G},\ldots]\)(无 \(\mathbf{B}\)
典型算法 ERA、Ho–Kalman、N4SID 确定性 SSI-COV、SSI-DATA、N4SID 随机
场景 实验室、已知输入 现场、仅响应、OMA

两类方法共用同一可观性矩阵与移位结构,区别仅在于数据来源与块矩阵构造方式;SSI 专为「无已知输入、仅输出」的 OMA 设计。


3. 模型与记号

3.1 状态空间模型

离散时间 LTI 模型为

\[ \mathbf{x}[k+1] = \mathbf{A} \mathbf{x}[k] + \mathbf{w}[k], \qquad \mathbf{y}[k] = \mathbf{C} \mathbf{x}[k] + \mathbf{v}[k]. \tag{1} \]

状态按上式演化,我们只观测到 \(\mathbf{y}[k]\)。SSI 的目标是从输出数据恢复 \(\mathbf{A},\mathbf{C}\),进而得到模态参数。

符号\(\mathbf{x}[k]\in\mathbb{R}^n\) 状态,\(n\)模型阶次\(\mathbf{A}\in\mathbb{R}^{n\times n}\) 状态矩阵;\(\mathbf{C}\in\mathbb{R}^{p\times n}\) 输出矩阵;\(\mathbf{y}[k]\in\mathbb{R}^p\) 输出(\(p\) 个传感器);\(\mathbf{w}[k],\mathbf{v}[k]\) 过程噪声与量测噪声(常设白噪声、零均值);\(i\)块行数(用户选取,如 20~50)。

3.2 可观性矩阵

可观性矩阵(\(\mathbf{C}\)\(\mathbf{A}\) 的幂次按块行堆叠)为

\[ \mathcal{O}_i = \begin{bmatrix} \mathbf{C} \\ \mathbf{C}\mathbf{A} \\ \vdots \\ \mathbf{C}\mathbf{A}^{i-1} \end{bmatrix} \in \mathbb{R}^{pi \times n}. \tag{2} \]

含义:第 1 块行是 \(\mathbf{C}\)(当前状态对应的输出),第 2 块行是 \(\mathbf{C}\mathbf{A}\)(下一时刻状态对应的输出),…,第 \(i\) 块行是 \(\mathbf{C}\mathbf{A}^{i-1}\)\(\mathcal{O}_i\) 张成的空间即「\(i\) 步输出能观测到的状态方向」——可观性子空间。 维度\(i\) 个块行,每块 \(p\times n\),故 \(\mathcal{O}_i\)\(pi\) 行 × \(n\)

3.3 移位与可观性矩阵的上段、下段

为从 \(\mathcal{O}_i\) 恢复 \(\mathbf{A}\),定义两个「去掉一块行」的矩阵(均为 \((i-1)p \times n\)):\(\mathcal{O}_{i,\mathrm{up}}\)(上段)与 \(\mathcal{O}_{i,\mathrm{down}}\)(下段)。

  • \(\mathcal{O}_{i,\mathrm{up}}\)\(\mathcal{O}_i\) 去掉最后一块行(保留第 1~\(i-1\) 块行)。
  • \(\mathcal{O}_{i,\mathrm{down}}\)\(\mathcal{O}_i\) 去掉第一块行(保留第 2~\(i\) 块行)。

\(\mathcal{O}_{i,\mathrm{down}}\) 的每一块行都等于 \(\mathcal{O}_{i,\mathrm{up}}\) 的对应块行右乘 \(\mathbf{A}\),即 \(\mathcal{O}_{i,\mathrm{down}} = \mathcal{O}_{i,\mathrm{up}} \mathbf{A}\)。故

\[ \mathbf{A} = \mathcal{O}_{i,\mathrm{up}}^\dagger \mathcal{O}_{i,\mathrm{down}}, \qquad \mathbf{C} = \mathcal{O}_i \text{ 的第一块行}. \tag{3} \]

\(\dagger\) 为 Moore–Penrose 伪逆。因此:一旦从数据得到 \(\mathcal{O}_i\)(或其列空间的一组基),\(\mathbf{A}\)\(\mathbf{C}\) 即可由上式唯一恢复。


4. 算法(可落地步骤)

下面按「你手头有什么、每一步具体怎么做、得到什么」写,方便直接实现或对照代码。

4.1 SSI-COV(协方差驱动)

你手头有的\(p\) 个通道的响应时间序列(例如 \(p\) 个加速度计),每个通道 \(N\) 个点,采样间隔 \(\Delta t\)(例如 100 Hz 则 \(\Delta t=0.01\) s)。数据可以排成 \(p \times N\) 的矩阵,第 \(k\) 列就是 \(k\) 时刻的 \(p\) 维输出 \(\mathbf{y}[k]\)

预处理(必做):每个通道减去该通道的均值(去直流),否则协方差会偏。可选:做带通滤波,只保留关心的频段(例如 1~20 Hz)。

步骤 1 — 算协方差
- 先定一个整数 \(i\),叫「块行数」,一般取 20~50(越大越吃内存,但可观性矩阵更饱满)。
- 对滞后 \(\ell = 0, 1, 2, \ldots, 2i-1\),用下式估计一个 \(p \times p\) 的矩阵 \(\mathbf{R}_\ell\)\(\mathbf{R}_0\) 是「同一时刻」各通道的协方差,\(\mathbf{R}_\ell\) 是「错开 \(\ell\) 步」的互协方差):

\[ \mathbf{R}_\ell = \frac{1}{N-\ell} \sum_{k=1}^{N-\ell} \mathbf{y}[k+\ell]\mathbf{y}[k]^T. \tag{4} \]
  • 大白话:\(\mathbf{R}_\ell\) 的第 \((a,b)\) 元 = 第 \(a\) 通道与第 \(b\) 通道错开 \(\ell\) 步的(样本)相关。你一共得到 \(2i\)\(p\times p\) 矩阵:\(\mathbf{R}_0,\mathbf{R}_1,\ldots,\mathbf{R}_{2i-1}\)

步骤 2 — 摆成块 Toeplitz 矩阵
- 用 \(\mathbf{R}_1\)\(\mathbf{R}_{2i-1}\) 摆成一个「块 Toeplitz」大矩阵 \(\mathbf{T}_{1|i}\):第 \(\alpha\) 块行、第 \(\beta\) 块列的那一块 = \(\mathbf{R}_{\alpha+\beta-1}\)(所以同一条斜线上的块都相同)。矩阵总大小 \(pi \times pi\)(例如 \(p=4,\,i=30\)\(120\times 120\)):

\[ \mathbf{T}_{1|i} = \begin{bmatrix} \mathbf{R}_1 & \mathbf{R}_2 & \cdots & \mathbf{R}_i \\ \mathbf{R}_2 & \mathbf{R}_3 & \cdots & \mathbf{R}_{i+1} \\ \vdots & \vdots & \ddots & \vdots \\ \mathbf{R}_i & \mathbf{R}_{i+1} & \cdots & \mathbf{R}_{2i-1} \end{bmatrix}. \tag{5} \]
  • 理论保证:这个 \(\mathbf{T}_{1|i}\) 的行空间 = 可观性矩阵的列空间,所以接下来用 SVD 把「主方向」抽出来。

步骤 3 — 对 T 做 SVD,抽出可观性
- 对 \(\mathbf{T}_{1|i}\) 做 SVD:\(\mathbf{T}_{1|i} = \mathbf{U}\mathbf{\Sigma}\mathbf{V}^T\)\(\mathbf{U}\)\(pi \times pi\)\(\mathbf{\Sigma}\) 是奇异值从大到小排列。
- 选「模型阶次」\(n\):通常先不知道,就多试几个(如 \(n=8,10,12,\ldots,40\)),后面用稳定图判哪些是真模态。暂时先定一个 \(n\)(例如 20)。
- 只保留前 \(n\) 个奇异值和对应的左、右奇异向量:\(\mathbf{U}_n\)\(pi \times n\))、\(\mathbf{\Sigma}_n\)\(n \times n\))、\(\mathbf{V}_n\)\(pi \times n\))。令

\[ \mathcal{O}_i = \mathbf{U}_n \mathbf{\Sigma}_n^{1/2}. \tag{6} \]
  • \(\mathcal{O}_i\)\(pi \times n\) 的矩阵。按「每 \(p\) 行一块」切成 \(i\):第 1 块(第 1~\(p\) 行)= 输出矩阵 \(\mathbf{C}\);第 2~\(i\) 块与第 1 块之间有「差一个 \(\mathbf{A}\)」的移位关系,用来求 \(\mathbf{A}\)

步骤 4 — 从 O_i 得到 A 和 C
- \(\mathbf{C}\):直接取 \(\mathcal{O}_i\)\(p\) 行、前 \(n\) ,即 \(\mathbf{C} = \mathcal{O}_i(1:p,\,1:n)\)\(p \times n\))。
- \(\mathbf{A}\)
- \(\mathcal{O}_{i,\mathrm{up}}\) = \(\mathcal{O}_i\) 去掉最后 \(p\)(保留前 \((i-1)p\) 行),尺寸 \((i-1)p \times n\)
- \(\mathcal{O}_{i,\mathrm{down}}\) = \(\mathcal{O}_i\) 去掉最前 \(p\)(保留后 \((i-1)p\) 行),尺寸 \((i-1)p \times n\)
- 算 \(\mathbf{A} = \mathcal{O}_{i,\mathrm{up}}^\dagger \, \mathcal{O}_{i,\mathrm{down}}\)\(\dagger\) 表示伪逆),得到 \(n \times n\)\(\mathbf{A}\)

步骤 5 — 从 A、C 得到模态参数
见 4.3(下面会写:怎么从 \(\mathbf{A}\) 的特征值得到频率和阻尼,从 \(\mathbf{C}\) 和特征向量得到振型)。

4.2 SSI-DATA(数据驱动)

你手头有的:和 COV 一样——\(p\) 通道、\(N\) 点、\(\Delta t\);同样先做去直流、可选带通。

步骤 1 — 摆成块 Hankel,分出「过去」和「未来」
- 选块行数 \(i\)(如 20~50),列数一般取 \(j = N - 2i + 1\)(这样每一列刚好是一段长度为 \(2i\) 的连续数据)。
- 构造 块 Hankel 矩阵:总共有 \(2i\) 个「块行」,每块 \(p\) 行;第 \(t\) 块行放的是时刻 \(t,\,t+1,\,\ldots,\,t+j-1\)\(p\) 通道数据(竖着排成 \(p \times j\),再拉成 \(p\) 行)。所以整个矩阵是 \(2pi \times j\)
- 过去块 \(\mathbf{Y}_p = \mathbf{Y}_{0|i-1}\):取前 \(i\) 个块行(前 \(pi\) 行),尺寸 \(pi \times j\)。每一列 = 某一起始时刻开始的「前 \(i\) 步」输出。
- 未来块 \(\mathbf{Y}_f = \mathbf{Y}_{i|2i-1}\):取后 \(i\) 个块行(后 \(pi\) 行),尺寸 \(pi \times j\)。每一列 = 同一时刻开始的「后 \(i\) 步」输出。
- 大白话:每一列是一段「过去 \(i\) 步 + 未来 \(i\) 步」的窗口;用「过去」的信息去预测「未来」,预测得最好的那部分就张成可观性子空间。

投影与斜投影(深入)
下面说明为何用「未来对过去的斜投影」就能得到可观性子空间,以及它与普通(正交)投影的区别。

  • 过去与未来的几何\(\mathbf{Y}_{0|i-1}\)\(\mathbf{Y}_{i|2i-1}\) 均为 \(pi \times j\)。每一**列**对应一段长度为 \(2i\) 的输出轨迹中的一个「时间窗」;过去块取前 \(i\) 个时间步,未来块取后 \(i\) 个时间步。从**行**的角度看,过去/未来的**行空间**是 \(\mathbb{R}^j\) 中的子空间(由各行张成);从**列**的角度看,**列空间**是 \(\mathbb{R}^{pi}\) 中的子空间。我们关心的是列空间:过去块的列张成的子空间、未来块的列张成的子空间,以及「由过去可线性预测的那部分未来」张成的子空间。

  • 正交投影 vs 斜投影:若把「未来」的每一列看成 \(\mathbb{R}^{pi}\) 中的向量,正交投影 是 :把该向量投影到「过去的列空间」上(沿与过去列空间正交的方向)。这样得到的只是「未来中落在过去列空间里的部分」,而过去与未来的列空间一般不同,故信息不够。斜投影 则不同:我们不做「沿法向」的投影,而是做 线性回归 ——用过去的列去最小二乘拟合未来的列。即:求矩阵 \(\mathbf{E}\),使得 \(\mathbf{E}\) 的每一列是过去列空间的线性组合,且 \(\mathbf{E}\) 作为「用过去预测未来」的估计在最小二乘意义下最优。这就是「未来对过去的斜投影」:在子空间辨识的约定下,斜投影恰好沿「与过去互补」的方向把未来压到由过去张成的子空间上,从而把「可由过去解释的未来」提取出来。

  • 斜投影的公式:记过去块 \(\mathbf{Y}_p = \mathbf{Y}_{0|i-1}\),未来块 \(\mathbf{Y}_f = \mathbf{Y}_{i|2i-1}\)。用过去线性预测未来(每列做回归)得到

\[\mathbf{O}_i = \mathbf{Y}_f \mathbf{Y}_p^T (\mathbf{Y}_p \mathbf{Y}_p^T)^{-1} \mathbf{Y}_p.\]

这就是 未来对过去的斜投影\(\mathbf{O}_i\)\(pi \times j\))。几何上:\(\mathbf{Y}_p^T (\mathbf{Y}_p \mathbf{Y}_p^T)^{-1} \mathbf{Y}_p\)\(\mathbb{R}^j\) 上把向量投影到「过去行空间」的矩阵;右乘 \(\mathbf{Y}_f\) 后,\(\mathbf{O}_i\) 的每一列都是「未来该列在过去行空间上的投影」在数据意义下的对应量,等价于用过去对未来做逐列最小二乘预测,故 \(\mathbf{O}_i\)列空间 就是「由过去可线性预测的那部分未来」张成的子空间。

  • 为何列空间 = 可观性子空间:在 LTI + 白噪声模型下,未来的输出由当前状态经 \(\mathbf{A},\mathbf{C}\) 的演化 plus 新噪声决定。「由过去可预测的那部分未来」恰好对应 状态的确定性演化 (不含未来噪声),而状态到输出的映射是 \(\mathbf{C}\)\(\mathbf{A}\) 的幂次,即可观性矩阵 \(\mathcal{O}_i\) 的块行。因此,可预测部分张成的子空间正是 \(\mathcal{O}_i\)列空间 。于是:对斜投影矩阵 \(\mathbf{O}_i\) 做 SVD,其 奇异向量张成列空间,即可观性子空间;取前 \(n\) 个并配合奇异值即可得到 \(\mathcal{O}_i\) 的估计(差一可逆右乘)。

  • 加权(CVA):实际中常对过去/未来块先做白化或加权(如 CVA:用 \((\mathbf{Y}_p \mathbf{Y}_p^T)^{-1/2}\)\((\mathbf{Y}_f \mathbf{Y}_f^T)^{-1/2}\) 左乘),再对加权后的斜投影做 SVD,最后「去权」得到 \(\mathcal{O}_i\)。这样可改善条件数并突出主要相关方向,数值与统计性质更好。

步骤 2 — 算斜投影,再做 SVD 得到可观性
- 用上面公式算出 \(\mathbf{O}_i = \mathbf{Y}_f \mathbf{Y}_p^T (\mathbf{Y}_p \mathbf{Y}_p^T)^{-1} \mathbf{Y}_p\)\(pi \times j\))。若用 CVA:先对 \(\mathbf{Y}_p、\mathbf{Y}_f\) 左乘白化矩阵,再算加权后的斜投影,SVD 后再「去权」还原。
- 对 \(\mathbf{O}_i\) 做 SVD:\(\mathbf{O}_i = \mathbf{U}\mathbf{\Sigma}\mathbf{V}^T\)列空间\(\mathbf{U}\) 的左列张成,所以取前 \(n\) 个左奇异向量和奇异值,令 \(\mathcal{O}_i = \mathbf{U}_n \mathbf{\Sigma}_n^{1/2}\),得到 \(pi \times n\) 的可观性估计(和 COV 里一样按「每 \(p\) 行一块」理解)。

步骤 3 — 从 O_i 得到 A 和 C
和 COV 完全一样:\(\mathbf{C} = \mathcal{O}_i(1:p,\,1:n)\)\(\mathcal{O}_{i,\mathrm{up}}\) = 去掉 \(\mathcal{O}_i\) 最后 \(p\) 行,\(\mathcal{O}_{i,\mathrm{down}}\) = 去掉 \(\mathcal{O}_i\) 最前 \(p\) 行,\(\mathbf{A} = \mathcal{O}_{i,\mathrm{up}}^\dagger \mathcal{O}_{i,\mathrm{down}}\)

步骤 4 — 模态参数
见 4.3。

4.3 模态参数提取(COV 与 DATA 共用)

拿到 \(\mathbf{A}\)\(n\times n\))和 \(\mathbf{C}\)\(p\times n\))之后,按下面步骤得到频率、阻尼和振型(可直接写进程序)。

1. 求 \(\mathbf{A}\) 的特征值(离散极点)
- 对 \(\mathbf{A}\) 做特征分解,得到 \(n\) 个特征值 \(\mu_1,\ldots,\mu_n\)(复数)。
- 只保留单位圆内、且成共轭对的:物理模态对应 \(|\mu|<1\) 的共轭对;单位圆上的或实根多为数值/模型假象,可先筛掉。若 \(n\) 较大,通常会有多对共轭极点,每对对应一个模态(频率 + 阻尼 + 振型)。

2. 离散 → 连续极点
- 离散模型里 \(\mu = e^{\lambda \Delta t}\),所以 \(\lambda = \ln(\mu)/\Delta t\)(复数取主值)。
- 对每一对共轭的 \(\mu_r,\,\mu_r^*\),只算一个(例如取虚部 \(>0\)\(\mu_r\)),得到 \(\lambda_r\),则 \(\lambda_r^*\) 为另一根。

3. 频率和阻尼比
- 对 \(\lambda_r = a_r + \mathrm{i}\,b_r\)\(a_r\leq 0\)):
- 固有圆频率 \(\omega_r = |\lambda_r| = \sqrt{a_r^2 + b_r^2}\)
- 固有频率 \(f_r = \omega_r/(2\pi)\)(Hz);
- 阻尼比 \(\zeta_r = -a_r / |\lambda_r|\)\(0 \leq \zeta_r \leq 1\) 为欠阻尼)。
- 大白话:\(\lambda_r\) 的模长决定频率,实部(负的)决定衰减快慢,阻尼比 = 实部绝对值/模长。

4. 振型
- 取 \(\mathbf{A}\) 对应 \(\mu_r\)右特征向量 \(\mathbf{\psi}_r\)\(n \times 1\))。
- 振型(在各通道上的振幅与相位)为 \(\mathbf{\phi}_r = \mathbf{C} \mathbf{\psi}_r\)\(p \times 1\))。
- 归一化:常用两种——(a) 把 \(\mathbf{\phi}_r\) 归一成单位范数(如 2-范数为 1),或 (b) 把某一通道(如第 1 个)的幅值置为 1,其余按比例缩放。报告/画图时注明用的是哪种。

输出:每个物理模态得到三个量——固有频率 \(f_r\)(Hz)、阻尼比 \(\zeta_r\)、振型 \(\mathbf{\phi}_r\)\(p\) 维向量)。

4.4 稳定图与阶次选择

问题:模型阶次 \(n\) 事先不知道;\(n\) 取太小会漏模态,取太大会有很多「假」极点。稳定图用来在图上把「真模态」和「假模态」区分开。

做法
- 对 \(n = n_{\min},\,n_{\min}+2,\,\ldots,\,n_{\max}\)(例如 \(n=8,10,12,\ldots,40\)各跑一遍 SSI(COV 或 DATA),每次得到一组极点(频率 + 阻尼)。
- 画一张图:横轴 = 阶次 \(n\),纵轴 = 频率(或纵轴频率、颜色/大小表示阻尼)。每个 \((n,\,f)\) 点代表该阶次下识别出的一个极点。

怎么读
- 稳定极点:随着 \(n\) 增加,某些频率–阻尼点几乎不动,在图上形成 竖线竖带 ——这些就是物理模态。
- 虚假极点:随 \(n\) 乱跳、或阻尼异常大/小的散点,一般是数值或过拟合,可忽略。

常用稳定判据(相邻两个阶次 \(n,\,n+2\) 比较):
- 频率差:\(\Delta f / f < 1\%\)(或更严 0.5%);
- 阻尼差:\(\Delta\zeta / \zeta < 5\%\)(或 10%)。
满足的极点标为「稳定」,最后只保留稳定极点对应的 \(f_r,\,\zeta_r,\,\mathbf{\phi}_r\) 作为识别结果。


5. 实践要点

5.1 适用情形与局限

适用:仅输出(环境振动)或输入–输出;需稳健、高精度模态识别;多阶/密模态;需阻尼与振型;具备较长、多通道数据。

局限:阶次 \(n\) 需人为或由稳定图选取;块矩阵与 SVD 计算量大;假设激励宽频/持续、噪声近似白;强噪声或非平稳会影响估计。

5.2 典型参数与验证

参数 建议
块行数 \(i\) 使 \(\mathcal{O}_i\) 对阶次 \(n\) 列满秩,典型 \(i=20\)~50,\(i\cdot p \geq n\)
模型阶次 \(n\) 稳定图试 \(n=8,10,12,\ldots\) 至约 2× 预期模态数,保留稳定极点
数据长度 \(N\) \(N \gg 2i\);土木 1~10 Hz、100 Hz 采样常用 2~10 分钟
验证 与 FDD/EFDD 或 ERA 对比;用识别模型重算协方差;检查振型一致性

5.3 边缘与在线、与其他方法比较

边缘/在线:SSI 因大矩阵与多阶次稳定图,对低功耗边缘设备负担较重;更适合服务器/云端,或边缘做轻量筛查后上传片段做 SSI。

比较
- SSI vs FDD:SSI 时域、参数化、直接给阻尼与振型,需阶次与稳定图;FDD 频域、非参数、无阻尼(EFDD 补充),实现简单。
- SSI vs ERA:SSI 从协方差或原始数据经投影+SVD,OMA 中更常用、更稳健;ERA 从 Markov 参数/脉冲响应构造 Hankel,形式更紧凑,有已知输入时更轻量。
- SSI-COV vs SSI-DATA:COV 先压缩为协方差、一次 Toeplitz+SVD,内存固定;DATA 用完整数据与投影,可加 CVA 等加权,常为软件首选,内存更高。


输出:模态参数 — 固有频率 \(f_r\),阻尼比 \(\zeta_r\),振型 \(\mathbf{\phi}_r\)