基于路径重积分与主成分分析的滚动轴承故障诊断方法

360影视 日韩动漫 2025-04-29 14:25 2

摘要:import numpy as npimport matplotlib.pyplot as pltfrom sklearn.decomposition import PCAfrom sklearn.svm import SVCfrom sklearn.mode

代码简单说明

1.信号生成:

模拟4类故障(可扩展至10类)

含周期性冲击、调制效应和高斯噪声

2.时延重构:

默认嵌入维度 d=3,时延 τ=10 采样点

3.路径签名:

实现2阶路径积分特征

递归计算各阶张量积特征

4. 特征降维:

PCA保留95%方差

5.分类模型:

使用RBF核SVM

展示混淆矩阵可视化

算法公式与流程

1. 时延重构路径空间

公式:

2. 路径重积分特征

k阶路径签名:

3. 主成分分析降维

目标:

4. SVM分类模型

优化目标:

部分代码如下:

import numpy as npimport matplotlib.pyplot as pltfrom sklearn.decomposition import PCAfrom sklearn.svm import SVCfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import accuracy_score, confusion_matrixfrom itertools import productplt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文显示问题plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题# 1. 模拟多故障振动信号生成# def generate_fault_signal(fs, duration, fault_type):"""生成10种不同类型的故障信号"""t = np.linspace(0, duration, int(fs*duration))freq_dict = {'normal': 0,'inner_race': 100, # 内圈故障频率'outer_race': 80, # 外圈故障频率'ball_fault': 60, # 滚动体故障频率# 其余6种故障类型扩展...}base_freq = freq_dict[fault_type]# 基础冲击信号impacts = np.zeros_like(t)if base_freq > 0:interval = int(fs / base_freq)impacts[::interval] = 1.0# 调制效应mod = 0.5 * (1 + np.sin(2 * np.pi * 0.5 * t)) # 调制频率0.5Hzsignal = np.convolve(impacts, np.exp(-50*np.linspace(0, 0.1, int(fs*0.1))), 'same') * mod# 添加噪声noise = 0.1 * np.random.randn(len(t))return signal + noise# 2. 时延重构路径构建# def time_delay_embedding(signal, d=3, tau=10):"""构建d维时延嵌入路径"""N = len(signal)embedded = np.zeros((N - (d-1)*tau, d))for i in range(d):embedded[:, i] = signal[i*tau : N - (d-1-i)*tau]return embedded

知乎学术咨询:

https://www.zhihu.com/consult/people/792359672131756032?isMe=1

担任《Mechanical System and Signal Processing》《中国电机工程学报》等期刊审稿专家,擅长领域:信号滤波/降噪,机器学习/深度学习,时间序列预分析/预测,设备故障诊断/缺陷检测/异常检测。

来源:小千科技每日一讲

相关推荐