113 lines
3.9 KiB
Python
113 lines
3.9 KiB
Python
from matplotlib import numpy
|
||
import matplotlib.pyplot as plot
|
||
import numpy as np
|
||
import tensorflow as tf
|
||
import os
|
||
|
||
'''
|
||
这是一个处理data的类
|
||
作用是将后缀为.dat的文件按节点个数(head)解析为可用的十进制文件
|
||
需要传入的参数有:
|
||
head:节点头数 int类型
|
||
filename:放置.dat文件的根路径 string类型
|
||
'''
|
||
|
||
|
||
class DataDeal(object):
|
||
voiceArray = []
|
||
|
||
def __init__(self, head, filename):
|
||
self.head = head
|
||
self.name = filename
|
||
'''创建一个获取文件夹下所有后缀名为.dat得文件'''
|
||
L = []
|
||
for root, dir, filename in os.walk(self.name):
|
||
for file in filename:
|
||
if os.path.splitext(file)[1] == '.dat':
|
||
L.append(file)
|
||
self.array = L
|
||
|
||
def __call__(self, head, filename, **kwargs):
|
||
k = np.array(self.array)
|
||
result = [[[] * self.head] * k.shape[0]]
|
||
Z = []
|
||
for file in self.array:
|
||
# 构建文件名
|
||
filename = self.name + '/' + file
|
||
Z.append(filename)
|
||
sum0 = [[] for i in range(self.head)]
|
||
sum1 = [[] for i in range(self.head)]
|
||
sum2 = [[] for i in range(self.head)]
|
||
for filename in Z:
|
||
with open(filename, 'rb') as f:
|
||
# 解析为16进制数据
|
||
bs = ['{:0>2X}'.format(x) for x in f.read()]
|
||
# 将每一个数据分别转化为10进制数据,并存入voiceArray
|
||
for x in bs:
|
||
# print(x)
|
||
x = int(x, 16)
|
||
self.voiceArray.append(x)
|
||
|
||
# 将voiceArray转化为np的数组
|
||
data = np.array(self.voiceArray)
|
||
print(data.shape)
|
||
# 创建一个二维空数组
|
||
data_true = [[] for i in range(self.head)]
|
||
# 数据按节点个数分成head个分别存入二维空数组的各行
|
||
for i in range(self.head):
|
||
data_true[i] = data[i::self.head]
|
||
# 将二维空数组重新整合成np.array的形式
|
||
data_true = np.array(data_true)
|
||
|
||
z = 0
|
||
if z % 12 == 0 or z % 12 == 1 or z % 12 == 2 or z % 12 == 3:
|
||
sum0 = np.hstack((sum0, data_true))
|
||
if z % 12 == 4 or z % 12 == 6 or z % 12 == 7 or z % 12 == 5:
|
||
sum1 = np.hstack((sum1, data_true))
|
||
if z % 12 == 9 or z % 12 == 10 or z % 12 == 11 or z % 12 == 8:
|
||
sum2 = np.hstack((sum2, data_true))
|
||
z=z+1
|
||
#sum0 = np.array(sum0)
|
||
#sum1 = np.array(sum1)
|
||
#sum2 = np.array(sum2)
|
||
print(sum0)
|
||
print(sum1)
|
||
print(sum2)
|
||
return sum0, sum1, sum2
|
||
|
||
|
||
if __name__ == '__main__':
|
||
data0= DataDeal(9, 'E:\data\DDS_data\平行齿轮箱齿轮齿根裂纹故障恒速\DATA')
|
||
print(data0(9, 'E:\data\DDS_data\平行齿轮箱齿轮齿根裂纹故障恒速\DATA'))
|
||
''' data0 = np.array(data0)
|
||
data1 = np.array(data1)
|
||
data2 = np.array(data2)
|
||
print(data0.shape)
|
||
print(data1.shape)
|
||
print(data2.shape)'''
|
||
|
||
'''
|
||
# 读取文件
|
||
filename = r'E:\data\DDS_data\平行齿轮箱齿轮表面磨损故障恒速\DATA\dds测试故障库4.6#0001.dat'
|
||
with open(filename, 'rb') as f:
|
||
# 解析为16进制数据
|
||
bs = ['{:0>2X}'.format(x) for x in f.read()]
|
||
# 将每一个数据分别转化为10进制数据,并存入voiceArray
|
||
for x in bs:
|
||
# print(x)
|
||
x = int(x, 16)
|
||
voiceArray.append(x)
|
||
|
||
# 将voiceArray转化为np的数组
|
||
data = np.array(voiceArray)
|
||
print(data.shape)
|
||
# 创建一个二维空数组
|
||
data_true = [[] for i in range(9)]
|
||
# 数据按节点个数分成head个分别存入二维空数组的各行
|
||
for i in range(9):
|
||
data_true[i] = data[i::9]
|
||
# 将二维空数组重新整合成np.array的形式
|
||
data_true = np.array(data_true)
|
||
print(data_true)
|
||
'''
|