第四章 时域特征提取:均值、方差、均方根、峰值因子、峭度、波形因子等统计特征的计算与工程意义
各位同学,大家好。今天我们来聊聊时域特征提取。说实话,这是状态监测里最基础、也最容易被忽视的一块。很多人一上来就搞FFT、小波变换,结果连均值都没算明白——嗯,我见过不少这样的案例。
时域特征,说白了就是直接从原始振动信号里算出来的统计量。它们不涉及频域变换,计算量小,物理意义明确。在工业现场,很多时候一个峭度值就能告诉你轴承是不是出问题了。
4.1 均值与方差:信号的中心与离散程度
均值,就是信号的平均水平。公式很简单:
μ = (1/N) * Σ x_i
但我要提醒你——均值在旋转机械监测里,往往没什么用。为什么?因为振动信号是交流分量,均值反映的是直流偏置。如果传感器有零漂,均值会偏离零,但这不代表设备有问题。
方差,描述信号偏离均值的程度:
σ² = (1/N) * Σ (x_i - μ)²
方差大,说明振动能量大。但方差有个问题——它的量纲是原始信号的平方。比如加速度信号单位是m/s²,方差单位就成了(m/s²)²,物理意义不直观。所以工程上更常用标准差σ,也就是方差的平方根。
4.2 均方根值:振动能量的直接体现
均方根(RMS)是状态监测里最常用的特征之一:
RMS = sqrt((1/N) * Σ x_i²)
RMS的物理意义很明确——它代表信号的有效值,直接反映振动能量。在ISO 10816等标准中,设备振动烈度就是用RMS来评定的。
我个人习惯,在设备正常运行时,RMS值应该相对稳定。如果RMS突然增大,说明振动能量增加了,可能是转子不平衡、不对中或者松动。
4.3 峰值因子与波形因子:冲击特征的识别
峰值因子,也叫波峰因数:
Crest Factor = X_peak / RMS
其中X_peak是信号的最大绝对值。峰值因子对冲击信号非常敏感。正常振动信号接近正弦波,峰值因子约1.414。如果出现冲击,峰值会变大,RMS变化不大,峰值因子就会升高。
波形因子:
Shape Factor = RMS / ( (1/N) * Σ |x_i| )
波形因子反映信号波形与正弦波的偏离程度。正弦波的波形因子约1.11。如果波形因子变大,说明信号中出现了尖峰或平顶。
你想想看,这两个指标配合使用效果很好。峰值因子高、波形因子也高——大概率是冲击性故障。峰值因子高但波形因子正常——可能是单次干扰。
4.4 峭度:冲击信号的敏感探测器
峭度(Kurtosis)是时域特征里的明星指标:
K = (1/N) * Σ ((x_i - μ)/σ)⁴
峭度衡量信号分布的"尾巴"有多重。正态分布的峭度是3。工程上常用归一化峭度(减去3),这样正态分布峭度为0。
峭度大于3,说明信号有较多冲击成分。峭度小于3,信号偏平缓。我在齿轮箱监测中,峭度从3.2跳到8.7,三天后齿轮就断了——嗯,峭度是早期故障的预警器。
4.5 各特征的工程意义对比
| 特征 | 物理意义 | 适用场景 | 注意事项 |
|---|---|---|---|
| 均值 | 直流分量 | 数据质量检查 | 对故障不敏感 |
| 方差/标准差 | 振动能量 | 整体趋势监测 | 量纲不直观 |
| 均方根 | 有效振动能量 | ISO标准评定 | 对早期冲击不敏感 |
| 峰值因子 | 冲击程度 | 轴承、齿轮故障 | 受单次干扰影响大 |
| 波形因子 | 波形畸变程度 | 配合峰值因子使用 | 单独使用意义有限 |
| 峭度 | 冲击概率密度 | 早期故障预警 | 故障后期可能下降 |
4.6 Python代码实现
下面是我常用的时域特征提取函数。代码不复杂,但要注意数值稳定性:
import numpy as np
def extract_time_features(signal):
"""
提取时域统计特征
signal: 一维数组,振动信号
"""
# 均值
mean_val = np.mean(signal)
# 方差
var_val = np.var(signal)
# 标准差
std_val = np.std(signal)
# 均方根
rms_val = np.sqrt(np.mean(signal**2))
# 峰值
peak_val = np.max(np.abs(signal))
# 峰值因子
crest_factor = peak_val / rms_val if rms_val != 0 else 0
# 波形因子
abs_mean = np.mean(np.abs(signal))
shape_factor = rms_val / abs_mean if abs_mean != 0 else 0
# 峭度
kurtosis_val = np.mean((signal - mean_val)**4) / (std_val**4) if std_val != 0 else 0
return {
'mean': mean_val,
'variance': var_val,
'std': std_val,
'rms': rms_val,
'peak': peak_val,
'crest_factor': crest_factor,
'shape_factor': shape_factor,
'kurtosis': kurtosis_val
}
4.7 知识体系结构图
下面这张图,是我梳理的时域特征提取知识体系。你可以看到,六个特征分成了三个维度:能量维度、冲击维度、波形维度。
4.8 工程应用中的注意事项
最后,我总结几条实战经验:
- 不要只看单一特征。我曾经只靠峭度做判断,结果误报率很高。后来把RMS、峰值因子、峭度三个特征结合起来,准确率提升了很多。
- 注意采样长度。时域特征对采样点数敏感。太短了统计不稳定,太长了计算量大。我一般取1024或2048点,刚好覆盖10个以上旋转周期。
- 趋势比绝对值重要。单个RMS值2.5mm/s说明不了什么,但连续三天从2.0涨到2.5,就值得关注了。
- 预处理不能省。去均值、去趋势项、滤波——这些步骤不做,特征值就是错的。我在一个项目里,因为没去直流分量,峭度算出来全是错的,排查了两天才发现。
好了,这一章就到这里。时域特征是状态监测的基石,把这些基础打牢,后面学频域特征、时频分析才会事半功倍。
公众号:蓝海资料掘金营,微信deep3321