加载数据示例

📅 发布时间:2026/7/6 22:54:03 👁️ 浏览次数:
加载数据示例
滚动轴承变转速故障数据集 本数据集包括6个故障轴承轻微故障中度故障重度故障和正常状态NC轴承的振动信号共有7种不同的健康状态。 每个实验采集时间为 15 秒由一个完整的加速/减速过程组成从静止状态逐渐加速到 3000 rpm然后保持稳定最后逐渐减速到 0。轴承振动信号分析最怕遇到什么情况变转速绝对算得上头号杀手。传统的平稳信号分析方法碰上转速波动就跟老式收音机收不到信号一样满屏雪花。今天咱们玩点刺激的——用真实工业场景的变转速轴承故障数据搞事情。先说说这个数据集的妖孽之处7种健康状态正常6种故障程度每个样本都是15秒的加速-稳速-减速过程。这就好比让算法坐过山车既要识别故障类型还得应对转速变化带来的信号畸变。直接上代码看看数据长啥样import numpy as np import matplotlib.pyplot as plt def load_bearing_data(file_path): raw_data np.loadtxt(file_path) time raw_data[:, 0] # 时间序列 vibration raw_data[:, 1] # 振动信号 rpm raw_data[:, 2] # 转速曲线 return time, vibration, rpm t, vib, rpm load_bearing_data(NC_01.txt) plt.figure(figsize(12,6)) plt.plot(t, vib, labelVibration) plt.plot(t, rpm, labelRPM, colorred) plt.legend() plt.title(正常轴承振动信号与转速变化) plt.show()!振动信号与转速曲线示意图这段代码抓取了正常轴承的振动信号和转速曲线。注意看红色转速线从0飙到3000rpm再回落振动信号像心电图一样跟着抽搐。这时候直接做FFT就像用菜刀切牛排——根本切不出纹理特征。对付这种非平稳信号老司机都知道要使用时频分析。上硬菜——短时傅里叶变换STFTfrom scipy.signal import stft freqs, times, Zxx stft(vib, fs25600, nperseg1024) plt.pcolormesh(times, freqs[:200], np.abs(Zxx[:200]), shadinggouraud) plt.colorbar(labelMagnitude) plt.title(STFT时频图) plt.ylabel(Frequency [Hz]) plt.xlabel(Time [sec]) plt.show()!STFT时频图示例滚动轴承变转速故障数据集 本数据集包括6个故障轴承轻微故障中度故障重度故障和正常状态NC轴承的振动信号共有7种不同的健康状态。 每个实验采集时间为 15 秒由一个完整的加速/减速过程组成从静止状态逐渐加速到 3000 rpm然后保持稳定最后逐渐减速到 0。这张热力图像极了抽象派油画但藏着转速变化与故障特征的秘密。黄色区域对应着轴承故障特征频率随转速变化的轨迹像不像宇宙飞船的飞行轨迹这时候传统固定阈值检测就废了得用动态追踪。实战中我们可以用转速信号做文章。举个栗子把时域信号转换成阶比谱def compute_order_spectrum(vibration, rpm, fs): # 转速估计与角度重采样 theta np.cumsum(rpm/60) * (1/fs) * 2*np.pi theta_uniform np.linspace(0, theta[-1], len(theta)) vib_resampled np.interp(theta_uniform, theta, vibration) # 阶比分析 order np.fft.fft(vib_resampled) return order order_spectrum compute_order_spectrum(vib, rpm, 25600) plt.plot(np.abs(order_spectrum[:500])) plt.xlabel(Order) plt.title(阶比谱分析)!阶比谱示例这个骚操作把转速变化的影响给熨平了故障特征在阶比谱上原地立正。比如内圈故障通常在1倍转频阶比处出现峰值外圈故障则可能在3.5倍阶比位置冒头。最后上点硬核的——用深度学习暴力破解from tensorflow.keras.layers import Input, Conv1D, MaxPooling1D, Dense from tensorflow.keras.models import Model # 构建1D CNN模型 inputs Input(shape(15360, 1)) x Conv1D(32, 64, activationrelu)(inputs) x MaxPooling1D(4)(x) x Conv1D(64, 16, activationrelu)(x) x MaxPooling1D(4)(x) x Dense(128, activationrelu)(x) outputs Dense(7, activationsoftmax)(x) model Model(inputs, outputs) model.compile(optimizeradam, losssparse_categorical_crossentropy) print(model.summary())这个卷积网络专治各种不服大尺寸卷积核64个采样点专门捕捉转速变化中的长时特征。不过要注意输入长度得对齐——15秒数据在25.6kHz采样率下正好是384000个点做适当分段处理。玩转这类数据的关键在于动态特征提取。下次遇到旋转机械故障诊断别急着换数据集试试这些方法说不定就解锁新成就了。毕竟在工业场景里设备可不会按照教科书上的固定转速运行。