1.数据集介绍
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/30161de7e42847dc8ae88336ba1a36ad.png)
2.代码
import random
import matplotlib
matplotlib.use('Agg')
from scipy.io import loadmat
import numpy as np
def split(DATA):
step = 400;
size = 1024;
data = []
for i in range(1, len(DATA) - size, step):
data1 = DATA[i:i + size]
data.append(data1)
random.shuffle(data)
npy = data[:300]
npy = np.asarray(npy)
return npy
# 读取CWRU数据集
B007 = loadmat('12KHZ_Data/2HP/12k_Drive_End_B007_2_120.mat')['X120_DE_time'].ravel()
B007_npy = split(B007)
np.save('npy/2HP/B007_data.npy', B007_npy)
B014 = loadmat('12KHZ_Data/2HP/12k_Drive_End_B014_2_187.mat')['X187_DE_time'].ravel()
B014_npy = split(B014)
np.save('npy/2HP/B014_data.npy', B014_npy)
B021 = loadmat('12KHZ_Data/2HP/12k_Drive_End_B021_2_224.mat')['X224_DE_time'].ravel()
B021_npy = split(B021)
np.save('npy/2HP/B021_data.npy', B021_npy)
IR007 = loadmat("12KHZ_Data/2HP/12k_Drive_End_IR007_2_107.mat")["X107_DE_time"].ravel()
IR007_npy = split(IR007)
np.save('npy/2HP/IR007_data.npy', IR007_npy)
IR014 = loadmat("12KHZ_Data/2HP/12k_Drive_End_IR014_2_171.mat")["X171_DE_time"].ravel()
IR014_npy = split(IR014)
np.save('npy/2HP/IR014_data.npy', IR014_npy)
IR021 = loadmat("12KHZ_Data/2HP/12k_Drive_End_IR021_2_211.mat")["X211_DE_time"].ravel()
IR021_npy = split(IR021)
np.save('npy/2HP/IR021_data.npy', IR021_npy)
OR007 = loadmat("12KHZ_Data/2HP/12k_Drive_End_OR007@6_2_132.mat")["X132_DE_time"].ravel()
OR007_npy = split(OR007)
np.save('npy/2HP/OR007_data.npy', OR007_npy)
OR014 = loadmat("12KHZ_Data/2HP/12k_Drive_End_OR014@6_2_199.mat")["X199_DE_time"].ravel()
OR014_npy = split(OR014)
np.save('npy/2HP/OR014_data.npy', OR014_npy)
OR021 = loadmat("12KHZ_Data/2HP/12k_Drive_End_OR021@6_2_236.mat")["X236_DE_time"].ravel()
OR021_npy = split(OR021)
np.save('npy/2HP/OR021_data.npy',OR021_npy)
# # normal
Normal = loadmat("12KHZ_Data/2HP/normal_2_99.mat")["X099_DE_time"].ravel()
Normal_npy = split(Normal)
np.save('npy/2HP/Normal_data.npy', Normal_npy)
"""
连续小波变换 CWT
参考论文:https:
morlet 小波在轴承故障诊断中比较常用
"""
import numpy as np
import pywt
import matplotlib.pyplot as plt
def CWT(data, fs=12000):
t = np.arange(0, len(data)) / fs
#wavename = "cgau8" # Frequence_cgau8 小波
wavename = "morl" # morlet 小波
# wavename = "cmor3-3" # cmor 小波
totalscale = 256
fc = pywt.central_frequency(wavename) # 中心频率
cparam = 2 * fc * totalscale
scales = cparam / np.arange(totalscale, 1, -1)
[cwtmatr, frequencies] = pywt.cwt(data, scales, wavename, 1.0 / fs) # 连续小波变换
return t,cwtmatr,frequencies
def Toimage(data,lable):
n = 0
for i in range(len(data)):
data1 = data[i] #data1.shape = (1024,)
# print(data1.shape)
t,cwtmatr,frequencies = CWT(data1,fs=12000)
n = n+1
plt.figure(figsize=(1, 1), dpi=224)
plt.contourf(t, frequencies, abs(cwtmatr)) # 画等高线图
plt.ylabel("Frequency(Hz)")
plt.xlabel('Time [sec]')
plt.axis('off')
plt.subplots_adjust(top=1, bottom=0, left=0, right=1, hspace=0, wspace=0)
plt.margins(0, 0)
plt.savefig('./image/2HP' + '/' + str(lable) + '/' + '{}'.format(n) + '.jpg',
pad_inches=0, bbox_inches='tight', format='jpg')
plt.close()
B007 = np.load('npy/2HP/B007_data.npy') #B007.shape = (300, 1024)
B014 = np.load('npy/2HP/B014_data.npy')
B021 = np.load('npy/2HP/B021_data.npy')
IR007 = np.load('npy/2HP/IR007_data.npy')
IR014 = np.load('npy/2HP/IR014_data.npy')
IR021 = np.load('npy/2HP/IR021_data.npy')
OR007 = np.load('npy/2HP/OR007_data.npy')
OR014 = np.load('npy/2HP/OR014_data.npy')
OR021 = np.load('npy/2HP/OR021_data.npy')
Normal = np.load('npy/2HP/Normal_data.npy')
Toimage(Normal,'Normal')
Toimage(B007,'B007')
Toimage(B014,'B014')
Toimage(B021,'B021')
Toimage(IR007,'IR007')
Toimage(IR014,'IR014')
Toimage(IR021,'IR021')
Toimage(OR007,'OR007')
Toimage(OR014,'OR014')
Toimage(OR021,'OR021')
3.CWT结果图
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/5fc90f70929a4580a29bbc33cb262120.png)