3. 时域分析基础:均值、方差、均方根值、峰值因子、峭度指标

聊到异常信号识别,很多人第一反应就是上频谱、上小波。但我个人的习惯是——先看时域。为什么?因为时域最直观,你看到的波形就是信号本来的样子。而且很多故障特征,在时域里就已经暴露无遗了。

这一章,我们就把时域里最常用的五个统计指标掰开揉碎讲清楚。它们分别是:均值、方差、均方根值、峰值因子和峭度指标。搞懂这五个,你就能对一段信号有个基本的「体检报告」了。

3.1 均值(Mean)——信号的直流分量

均值,说白了就是信号的平均水平。公式很简单:

μ = (1/N) * Σ x_i

其中 N 是采样点数,x_i 是每个采样点的幅值。

在实际项目中,均值能告诉我们什么?

  • 传感器的零点漂移:如果一个振动传感器在静止状态下均值不为零,说明它偏了。我曾经遇到过一批加速度计,刚装上去均值就有 0.2V 的偏移,结果查出来是供电电源纹波太大。
  • 信号的直流偏置:很多信号处理算法(比如 FFT)对直流分量很敏感,通常需要先减掉均值再做分析。
注意:均值对异常值不敏感。一个很大的脉冲只会让均值变化一点点。所以均值适合看「整体趋势」,不适合抓「突发异常」。

3.2 方差(Variance)——信号的波动程度

方差衡量的是信号偏离均值的程度。公式是:

σ² = (1/N) * Σ (x_i - μ)²

方差越大,说明信号波动越剧烈。你想想看,一个平稳运行的电机,它的振动信号方差应该很小;但如果轴承开始磨损,振动幅度忽大忽小,方差就会明显增大。

我个人的经验是:方差适合做趋势监测。比如你连续采集 100 组数据,每组算一个方差,然后画成曲线。一旦方差曲线开始爬升,大概率是设备状态在恶化。

小技巧:方差是平方量纲,单位是原始信号单位的平方。如果你觉得这个单位不直观,可以取标准差(方差的平方根),它的量纲和原始信号一致。

3.3 均方根值(RMS)——信号的有效能量

均方根值,也叫有效值。它的公式是:

RMS = sqrt( (1/N) * Σ x_i² )

RMS 是时域分析里最常用的指标之一。它反映了信号的能量大小。对于正弦波,RMS = 峰值 / √2。但对于复杂信号,RMS 能综合反映信号的总体强度。

我在项目中的应用场景:

  • 振动烈度评估:ISO 10816 标准就是用 RMS 来评价设备振动等级的。我记得有一次给一个水泵做状态评估,RMS 值从 2.3 mm/s 涨到了 4.8 mm/s,我直接建议停机检修,结果发现叶轮已经腐蚀了三分之一。
  • 噪声监测:声学信号也常用 RMS 表示声压级。
核心要点:RMS 对持续性的高能量信号敏感,但对瞬态冲击不敏感。比如一个 10ms 的冲击脉冲,RMS 可能只上升一点点。这时候就需要看峰值因子了。

3.4 峰值因子(Crest Factor)——冲击的敏感器

峰值因子的定义是:

Crest Factor = Peak / RMS

其中 Peak 是信号的最大绝对值。这个指标非常直观——它告诉你信号的峰值相对于有效值有多「突出」。

为什么这个指标重要?

  • 对于纯正弦波,峰值因子固定为 √2 ≈ 1.414。
  • 如果信号里有冲击成分,峰值会变大,RMS 变化不大,所以峰值因子会升高。
  • 如果信号是随机噪声,峰值因子一般在 3~5 之间。

避坑指南:我曾经在分析一个齿轮箱信号时,发现峰值因子突然从 3.2 降到了 1.8。当时我还以为是好事,结果拆开一看,齿轮的齿已经打掉了好几个。为什么?因为打齿之后冲击消失了,信号变得「平滑」了,峰值因子反而下降了。所以峰值因子要结合其他指标一起看,不能孤立使用。

3.5 峭度指标(Kurtosis)——异常分布的探测器

峭度指标衡量的是信号幅值分布的「尾巴」有多重。公式是:

Kurtosis = (1/N) * Σ ((x_i - μ) / σ)⁴

对于正态分布,峭度值约为 3。如果峭度大于 3,说明信号有较多的极端值(重尾分布);如果小于 3,说明信号分布比较「扁平」。

峭度在异常检测中的妙用:

  • 早期故障检测:轴承早期故障时,会产生周期性的冲击脉冲,峭度值会明显升高。我见过一个案例,峭度从 3.1 涨到 8.5 的时候,轴承保持架已经出现了裂纹。
  • 区分故障类型:磨损类故障通常峭度变化不大,而点蚀、剥落类故障峭度会飙升。
注意:峭度对单个异常值非常敏感。如果数据采集过程中有一个传感器误触发的毛刺,峭度可能会被拉得很高。所以计算峭度之前,建议先做简单的异常值剔除。

3.6 五个指标的关系与对比

这五个指标不是孤立的,它们从不同角度描述信号的特征。我画了一张图来展示它们之间的关系:

时域分析五大指标关系图 原始信号 x(t) 均值 μ 方差 σ² 均方根值 RMS 峰值因子 = Peak / RMS 峭度 Kurtosis 说明 均值看趋势,方差看波动,RMS看能量 峰值因子和峭度专门抓冲击和异常分布

从这张图可以看出:均值、方差、RMS 是基础指标,它们描述信号的「常规状态」;而峰值因子和峭度是进阶指标,专门用来捕捉异常和冲击。

3.7 实战:用 Python 计算这五个指标

光说不练假把式。下面是一段 Python 代码,演示如何用 NumPy 计算这五个指标:

import numpy as np

def time_domain_features(signal):
    """
    计算时域五大指标
    signal: 一维数组,时域信号
    """
    # 均值
    mean = np.mean(signal)

    # 方差
    variance = np.var(signal)

    # 均方根值
    rms = np.sqrt(np.mean(signal**2))

    # 峰值因子
    peak = np.max(np.abs(signal))
    crest_factor = peak / rms

    # 峭度
    kurtosis = np.mean((signal - mean)**4) / (variance**2)

    return {
        'mean': mean,
        'variance': variance,
        'rms': rms,
        'crest_factor': crest_factor,
        'kurtosis': kurtosis
    }

# 示例:生成一段正常信号和一段异常信号
t = np.linspace(0, 1, 1000)
normal_signal = np.sin(2 * np.pi * 50 * t) + 0.1 * np.random.randn(1000)
abnormal_signal = normal_signal.copy()
abnormal_signal[500:510] += 5  # 加入冲击

print("正常信号指标:", time_domain_features(normal_signal))
print("异常信号指标:", time_domain_features(abnormal_signal))

运行结果会告诉你什么?

  • 正常信号的峰值因子大约在 1.5~2.0 之间,峭度接近 3。
  • 加入冲击后,峰值因子可能飙升到 4~6,峭度可能到 10 以上。
  • 而均值和 RMS 的变化相对较小。
我的建议:在实际项目中,不要只看单一指标。把五个指标放在一起,做一个「多维特征向量」,然后用趋势图或者散点图观察它们的变化。这样能更早、更准地发现异常。

3.8 本章小结

时域分析是信号处理的入门功夫,也是异常检测的基石。五个指标各有侧重:

指标 物理含义 对异常敏感度 典型应用
均值 直流分量 低 传感器零点校准
方差 波动程度 中 趋势监测
均方根值 有效能量 中 振动烈度评估
峰值因子 冲击强度 高 冲击检测
峭度 分布尾部 高 早期故障预警