1. 项目概述:当几何遇上机械故障诊断
在工业设备监测领域,机械故障诊断一直是个既关键又棘手的课题。传统振动信号分析方法常常受限于线性假设,而实际机械系统的动态特性往往表现出强烈的非线性。这就像试图用直尺测量弯曲的管道——工具和对象之间存在根本性的不匹配。
最近我在一个风机齿轮箱故障诊断项目中,尝试将四种高阶几何方法(仿射不变性、复流形结构、芬斯勒度量和子流形嵌入)融合应用,配合Python实现了一套全新的诊断流程。这个方法的核心思想是:把振动信号看作高维空间中的几何对象,通过不同几何视角的"联合观测"来捕捉故障特征。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心几何工具包解析
2.1 仿射不变性:故障特征的稳定表达
仿射不变性就像给振动信号装上了"防变形滤镜"。在齿轮箱案例中,不同转速下的振动信号幅值会变化,但故障特征在仿射变换下应该保持稳定。我们采用矩不变量作为特征:
python复制def calculate_affine_moments(signal):
# 计算中心矩
mu_20 = np.mean((signal - np.mean(signal))**2)
mu_02 = np.mean((np.diff(signal))**2)
mu_11 = np.mean((signal[:-1] - np.mean(signal)) * np.diff(signal))
# 计算仿射不变量
invariant = (mu_20*mu_02 - mu_11**2) / (np.mean(signal)**4 + 1e-6)
return invariant
关键技巧:添加1e-6防止除零错误,实际项目中这个值需要根据信号幅值调整
2.2 复流形结构:振动信号的相位信息编码
振动信号本质上包含幅值和相位双重信息。我们将时域信号映射到复流形:
- 希尔伯特变换获取解析信号
- 构建相空间流形
- 计算复特征值分布
python复制from scipy.signal import hilbert
def complex_manifold_features(signal):
analytic_signal = hilbert(signal)
ph
