4. 模态置信准则(MAC)用于模态验证

模态置信准则(MAC)用于模态验证 学习卡片

MAC 矩阵的物理含义与判读边界

模态置信准则(Modal Assurance Criterion, MAC)用两个振型向量的归一化点积衡量其几何相似度,取值 0~1。对角元恒为 1;非对角元越接近 1,说明两阶模态振型形状越相似。工程判读通常采用三条经验阈值:

  • MAC < 0.1:两阶模态振型近似正交,可视为独立模态;
  • 0.1 ≤ MAC < 0.3:存在轻度相关,需结合频率间隔与阻尼比复核;
  • MAC ≥ 0.3:强相关,高度怀疑虚假模态、模态混叠或测点不足导致的振型泄漏。

需要注意:MAC 高并不必然等于虚假模态。对称结构中的重根模态、测点布置过少、参考点恰好落在某阶模态节点附近,都会造成非对角元偏高。因此 MAC 必须与频率、阻尼比、相干函数和物理可解释性联合判断。

MAC 矩阵判读与虚假模态剔除决策 MAC 矩阵(示例:6 阶模态) 1 2 3 4 5 6 1 2 3 4 5 6 1.00 0.04 0.07 0.02 0.05 0.03 0.04 1.00 0.18 0.06 0.09 0.01 0.07 0.18 1.00 0.11 0.03 0.08 0.02 0.06 0.11 1.00 0.72 0.05 0.05 0.09 0.03 0.72 1.00 0.04 0.03 0.01 0.08 0.05 0.04 1.00 对角元 = 1 MAC < 0.1(独立) 0.1 ≤ MAC < 0.3(复核) MAC ≥ 0.3(强相关) 剔除决策路径 非对角元 MAC ≥ 0.3? 是 检查频率间隔 Δf 与阻尼比 ζ Δf < 2 Hz 或 ζ 异常 → 模态混叠 检查测点数量与参考点位置 参考点靠近节点 → 振型泄漏 剔除较弱模态或增加测点重测 保留物理可解释的模态 否 MAC < 0.1 → 模态独立 通过验证,进入后续分析 关键提醒: MAC 高 ≠ 虚假模态。对称结构重根、测点不足、参考点位于节点附近均会导致非对角元偏高,需结合频率、阻尼、相干函数综合判断。

计算流程与关键代码

假设已通过最小二乘复指数法(LSCE)从实测 FRF 中识别出 6 阶模态振型矩阵 Phi(尺寸 n_locations × n_modes),下面用 Python 计算 MAC 矩阵并自动标记可疑模态对。

import numpy as np

def compute_mac(Phi):
    """
    Phi: 振型矩阵,形状 (n_locations, n_modes)
    返回: MAC 矩阵 (n_modes, n_modes)
    """
    n_modes = Phi.shape[1]
    MAC = np.zeros((n_modes, n_modes))
    for i in range(n_modes):
        for j in range(n_modes):
            num = np.abs(np.dot(Phi[:, i].conj(), Phi[:, j]))**2
            den = (np.dot(Phi[:, i].conj(), Phi[:, i]).real *
                   np.dot(Phi[:, j].conj(), Phi[:, j]).real)
            MAC[i, j] = num / den
    return MAC

# 示例:6 阶模态,12 个测点
np.random.seed(42)
Phi = np.random.randn(12, 6) + 1j * np.random.randn(12, 6)

# 人为构造第 4、5 阶高度相关(模拟虚假模态/混叠)
Phi[:, 4] = Phi[:, 3] * 0.95 + 0.05 * (np.random.randn(12) + 1j*np.random.randn(12))

MAC = compute_mac(Phi)
np.set_printoptions(precision=3, suppress=True)
print("MAC 矩阵:")
print(MAC)

# 自动标记非对角元 >= 0.3 的模态对
threshold = 0.3
print("\n可疑模态对(MAC >= 0.3):")
for i in range(MAC.shape[0]):
    for j in range(i+1, MAC.shape[1]):
        if MAC[i, j] >= threshold:
            print(f"  模态 {i+1} ↔ 模态 {j+1}: MAC = {MAC[i, j]:.3f}")

运行后预期输出中,模态 4 与模态 5 的 MAC 值会显著高于 0.3(示例中约 0.72),其余非对角元均低于 0.1。这提示第 4、5 阶模态可能来自同一物理模态的重复识别或混叠。

剔除建议与复核步骤

  1. 检查频率间隔:若两阶模态频率差 Δf 小于频率分辨率的 2 倍,优先怀疑模态混叠。可提高谱线数或改用 PolyMAX 等适合密集模态的方法重新识别。
  2. 检查阻尼比:虚假模态常伴随异常高或负阻尼比。若 ζ > 20% 或为负值,应直接剔除。
  3. 检查参考点位置:若参考点恰好落在某阶模态节点附近,该阶振型信噪比极低,MAC 会虚高。建议更换参考点或增加参考点数量。
  4. 检查测点数量:测点数少于模态阶数时,振型向量空间不足,MAC 矩阵会出现伪相关。确保测点数至少为关注模态数的 2 倍。
  5. 物理可解释性复核:将保留的模态振型与有限元或工程经验对比,确认振型形状符合结构力学预期。
MAC 阈值不是绝对标准。对于大型柔性结构或高频密集模态区域,可适当放宽至 0.4;对于简单悬臂梁等低阶模态稀疏结构,建议收紧至 0.2。最终剔除决策必须结合频响函数质量、相干函数和物理判断,不能仅依赖单一 MAC 数值。

实操检查清单

检查项通过条件不通过时的动作
MAC 非对角元最大值< 0.3标记对应模态对,进入复核
频率间隔 Δf≥ 2 倍频率分辨率提高谱线数或改用 PolyMAX
阻尼比 ζ0 < ζ < 20%剔除异常阻尼模态
测点数 / 模态数≥ 2增加测点或减少识别模态数
参考点位置不靠近任何关注模态节点更换参考点或增加参考点
振型物理可解释性与有限元/经验一致重新检查识别参数或测量数据