4. 时域分析:均值、方差、均方根值、峰值因子、峭度等统计特征提取

各位同学,咱们今天聊聊时域分析。说白了,就是把振动信号直接拿来算数,不搞什么傅里叶变换。你想想看,传感器采集到的原始波形,里面藏着大量信息。我做了十几年故障诊断,最深的体会就是——时域特征虽然基础,但往往最管用。

很多新手一上来就搞频谱分析,觉得高大上。但我个人习惯,拿到数据第一件事,先算几个时域统计量。为什么?因为计算快,物理意义明确,而且能快速判断设备有没有大问题。嗯,这里要注意,时域特征不是万能的,但绝对是诊断工具箱里的“瑞士军刀”。

4.1 均值与方差:信号的基础画像

均值,说白了就是信号的平均水平。对于振动信号,均值反映的是信号的直流分量。如果齿轮箱正常运转,均值应该稳定在某个小值附近。我在项目中遇到过,有一次测得的均值突然漂移,排查后发现是传感器安装松动导致的。所以,均值异常不一定代表齿轮坏了,也可能是测量系统出了问题。

均值的计算公式很简单:

μ = (1/N) * Σ x_i

其中N是采样点数,x_i是第i个采样值。

方差呢,描述的是信号偏离均值的程度。方差越大,说明振动越剧烈。我建议把方差和均值结合起来看。比如,均值没变,方差突然增大,那大概率是出现了冲击性故障。

σ² = (1/N) * Σ (x_i - μ)²
我的小技巧: 实际工程中,我通常用标准差(方差的平方根)代替方差,因为量纲和原始信号一致,更容易理解。比如加速度信号单位是m/s²,标准差也是m/s²,看着直观。

4.2 均方根值:振动能量的度量

均方根值(RMS)是时域分析里最常用的特征之一。它反映的是信号的有效值,也就是振动能量的大小。对于旋转机械,RMS值能很好地反映整体磨损程度。

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

我记得有一次给某化工厂做齿轮箱诊断,他们一直用峰值指标做报警,结果频繁误报。我建议改用RMS值,配合趋势分析,准确率大幅提升。为什么?因为RMS对持续性的磨损更敏感,而峰值容易受偶然冲击干扰。

故障类型 RMS变化趋势 典型特征
均匀磨损 缓慢上升 RMS稳定增加,无突变
齿面点蚀 波动上升 RMS随负载变化明显
断齿 突然增大 RMS瞬间跳变,伴随冲击
注意: 我曾经吃过亏,只靠RMS一个指标做判断。有一次RMS值正常,但齿轮已经出现裂纹。后来才明白,RMS对早期局部故障不敏感。所以,RMS要和其他特征配合使用。

4.3 峰值因子与峭度:捕捉冲击信号

这两个指标是专门用来抓冲击信号的。你想想看,齿轮出现点蚀或断齿时,每次啮合都会产生一个冲击脉冲。这种信号在时域上表现为“尖刺”。

峰值因子是峰值与RMS的比值:

Crest Factor = Peak / RMS

正常齿轮箱的峰值因子一般在3-5之间。如果突然飙升到8以上,那就要警惕了。我建议设置两个阈值:黄色预警(5-8)和红色报警(>8)。

峭度(Kurtosis)是描述信号分布形态的统计量。正态分布的峭度是3。如果峭度大于3,说明信号有更多的极端值,也就是冲击成分多。

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

核心经验: 我在实际项目中发现,峭度对早期故障非常敏感。有一次,RMS和峰值因子都没变化,但峭度从3.2跳到了4.5。拆开检查,果然发现一个齿面有微小裂纹。所以,我建议把峭度作为早期预警的首选指标。

4.4 特征提取的工程实践

说了这么多理论,咱们看看实际怎么操作。我一般用Python做特征提取,代码很简单:

import numpy as np

def extract_time_features(signal):
    # 信号长度
    N = len(signal)
    
    # 均值
    mean_val = np.mean(signal)
    
    # 方差
    var_val = np.var(signal)
    
    # 均方根值
    rms_val = np.sqrt(np.mean(signal**2))
    
    # 峰值
    peak_val = np.max(np.abs(signal))
    
    # 峰值因子
    crest_factor = peak_val / rms_val
    
    # 峭度
    kurtosis_val = np.mean((signal - mean_val)**4) / (var_val**2)
    
    return {
        'mean': mean_val,
        'variance': var_val,
        'rms': rms_val,
        'peak': peak_val,
        'crest_factor': crest_factor,
        'kurtosis': kurtosis_val
    }

这段代码我用了好多年,基本没改过。你直接复制就能用。不过要注意,实际工程中信号可能有直流偏置,建议先做去均值处理。

4.5 特征选择的避坑指南

我曾经犯过一个错误,把所有时域特征都扔进模型,结果过拟合得一塌糊涂。后来总结出几条经验:

  • 不要贪多: 6-8个时域特征足够,多了反而增加噪声
  • 关注趋势: 单个时刻的特征值意义有限,要看变化趋势
  • 结合工况: 转速和负载变化会影响特征值,要归一化处理
  • 验证有效性: 每个特征都要做显著性检验,没用的果断去掉

嗯,这里还要强调一点。时域特征虽然好用,但不要孤立使用。我通常的做法是:先用时域特征做快速筛查,发现异常后再用频域或时频域方法精确定位故障位置。这样效率最高。

时域分析知识体系 时域统计特征 均值 (μ) 方差 (σ²) 均方根值 (RMS) 峰值因子 直流分量 传感器偏置 振动剧烈程度 冲击性故障 振动能量 整体磨损 冲击检测 报警阈值 工程应用:快速筛查 → 异常预警 → 故障定位

这张图把咱们今天讲的内容串起来了。你仔细看看,从均值到峭度,每个特征都有明确的物理意义和工程用途。我个人建议,刚开始做诊断时,先把这六个特征吃透,比盲目学一堆高级算法管用得多。

好了,时域分析就讲到这里。记住一句话:简单的东西往往最可靠。下次拿到振动数据,先算算这些统计量,你会对设备状态有个清晰的判断。

专注资料整理