1. 项目概述:当微分几何遇上机械故障诊断
十年前我第一次接触旋转机械故障诊断时,绝不会想到微分几何能成为解决振动信号分析难题的利器。传统方法依赖傅里叶变换和时频分析,就像用放大镜观察模糊的照片,而引入仿射不变性、复流形等几何工具后,我们突然拥有了核磁共振成像般的透视能力。
这个Python实现的项目核心在于:将振动信号的高维特征空间视为具有特定几何结构的流形,通过芬斯勒度量捕捉非线性特征,再借助子流形嵌入实现故障模式的可视化分离。就像给机械振动信号绘制了一幅"几何地图",不同故障类型会自然聚集在不同区域。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心数学工具解析
2.1 仿射不变性的工程意义
在轴承振动分析中,负载变化会导致信号幅值整体缩放,这正是仿射变换的典型表现。我们采用对数-极坐标变换实现幅值-尺度解耦:
python复制def affine_invariant_transform(signal):
"""将原始信号转换为仿射不变特征"""
analytic_signal = hilbert(signal) # 希尔伯特变换获取解析信号
instantaneous_amplitude = np.abs(analytic_signal)
instantaneous_phase = np.unwrap(np.angle(analytic_signal))
# 对数幅值处理
log_amplitude = np.log(instantaneous_amplitude + 1e-12)
return np.column_stack((log_amplitude, instantaneous_phase))
关键技巧:添加1e-12避免对数运算溢出,相位解卷绕(unwrap)保证连续性
2.2 复流形结构的构建方法
振动信号的时频分布本质是二维流形。我们通过以下步骤构建复流形:
- 计算短时傅里叶变换(STFT)获得时频矩阵
- 对每个时频点赋予复数坐标:z = a + jω
- 用Kähler度量定义流形上的距离:
python复制def kahler_metric(z1, z2):
"""定义复流形上的Kähler度量"""
dz = z1
