PHM challenge 2012数据集整理成mat格式(bearing1_1.mat,bearing1_2.mat,....,bearing3_3.mat)python代码

整体代码如下:
出的图是bearing1-1的acc_00001.csv的图,让读者观察一下数据是什么样的。

后面就是把PHM challenge 2012数据集进行合并整理,例如把bearing1-1中2803个acc文件合并成一个文件,并转换成mat格式,命名为bearing1-1.mat。

运行程序,直接可以得到bearing1_1.mat,bearing1_2.mat,…,bearing3_3.mat

注:需要提前在 'D:\ysu\databank\phm_data’下建立一个名字为mat的文件夹,不然会出错。也就是说mat这个文件夹和Learning_set这个文件夹是同一维度。

import os
import scipy.io
from matplotlib import pyplot as plt
from PIL import Image
import numpy as np
import pandas as pd
from IPython.display import clear_output

'读取某工况下某个轴承的某个采样数据csv文件,并观察'
d = pd.read_csv('D:\\ysu\\databank\\phm_data\\Learning_set\\Bearing1_1\\acc_00001.csv',
            header=None,sep=',')

plt.figure(figsize=(20,5))
plt.subplot(121)
plt.plot(d.iloc[:,-2])
plt.title('Horizontal_vibration_signals')
plt.subplot(122)
plt.plot(d.iloc[:,-1])
plt.title('Vertical_vibration_signals')
plt.show()

def get_a_bearings_data(folder):
    ''' 获取某个工况下某个轴承的全部n个csv文件中的数据,返回numpy数组
    dp:bearings_x_x的folder
    return:folder下n个csv文件中的数据,shape:[n*32768,2]=[文件个数*采样点数,通道数]'''
    names = os.listdir(folder)
    is_acc = ['acc' in name for name in names] 
    names = names[:sum(is_acc)]
    files = [os.path.join(folder,f) for f in names]
    # Bearing1_4 的csv文件的分隔符是分号:';'
    print(pd.read_csv(files[0],header=None).shape)
    sep = ';' if pd.read_csv(files[0],header=None).shape[-1]==1 else ','
    h = [pd.read_csv(f,header=None,sep=sep).iloc[:,-2] for f in files]
    v = [pd.read_csv(f,header=None,sep=sep).iloc[:,-1] for f in files]
    H = np.concatenate(h)
    V = np.concatenate(v)
    print(H.shape,V.shape)
    return np.stack([H,V],axis=-1)

p = 'D:\\ysu\\databank\\phm_data'

for i in ['Learning_set','Full_Test_Set']:
    pp = os.path.join(p,i)
    for j in os.listdir(pp):
        ppp = os.path.join(pp,j)
        print(ppp)
        
        
        data = get_a_bearings_data(ppp)
        save_name = p + '\\mat\\' + j+'.mat'
        print(save_name)
        scipy.io.savemat(save_name,{'h':data[:,0], 'v':data[:,1]}) # 写入mat文件        
    print('\n')

代码来自GitHub。链接: https://github.com/famer3riots/PHM-RUL-Prediction-by-EM.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值