NASA IGBT 数据提取(Python)
NASA IGBT 数据集是一个结构体,手动提取需要的电压、电流信息十分麻烦。因此,需要编写一套自动提取数据的程序。
以NASA IGBT数据集的“Thermal Overstress Aging with Square Signal at gate and SMU data”文件夹为例,详见如下:
# Aging Device device_name = ["Device 2", "Device 3", "Device 4", "Device 5"] # Aging Data mat_name = ["Device2_1", "Device3_1", "Device4_1", "Device5_1"]
def transient_mat_read(): Device2_data_max = [] # 峰值电压 Device2_data = [] # 原始电压 Device3_data_max = [] Device3_data = [] Device4_data_max = [] Device4_data = [] Device5_data_max = [] Device5_data = [] for i in range(0, len(device_name)): path = "/home/IGBT/Thermal Overstress Aging with Square Signal at gate and SMU data/Aging Data/" + device_name[i] +"/" + mat_name[i] # 文件保存位置 data = loadmat(path) # print(data.keys()) if i == 0: # Device2 data_len = data['measurement'][0].item()[1]['timeDomain'][0] length = len(data_len) for j in range(length): data1 = data_len[j][0][0][4][0] Device2_data = np.append(Device2_data, data1) # 生成原始电压数据 Device2_data_max = np.append(Device2_data_max,max(data1)) # 转换原始电压数据维度 Device2_data = Device2_data.reshape(length, len(data1)) if i == 1: # Device3 data_len = data['measurement'][0].item()[1]['timeDomain'][0] length = len(data_len) for j in range(length): data1 = data_len[j][0][0][4][0] Device3_data = np.append(Device3_data, data1) # 生成原始电压数据 Device3_data_max = np.append(Device3_data_max, max(data1)) # 转换原始电压数据维度 Device3_data = Device3_data.reshape(length, len(data1)) if i == 2: # Device4 data_len = data['measurement'][0].item()[1]['timeDomain'][0] length = len(data_len) for j in range(length): data1 = data_len[j][0][0][4][0] Device4_data = np.append(Device4_data, data1) # 生成原始电压数据 Device4_data_max = np.append(Device4_data_max, max(data1)) # 转换原始电压数据维度 Device4_data = Device4_data.reshape(length, len(data1)) if i == 3: # Device5 data_len = data['measurement'][0].item()[1]['timeDomain'][0] length = len(data_len) for j in range(length): data1 = data_len[j][0][0][4][0] Device5_data = np.append(Device5_data, data1) # 生成原始电压数据 Device5_data_max = np.append(Device5_data_max, max(data1)) # 转换原始电压数据维度 Device5_data = Device5_data.reshape(length, len(data1)) return (Device2_data, Device2_data_max, Device2_data, Device3_data_max, Device4_data, Device4_data_max, Device5_data, Device5_data_max)
注释:
(1)data1 = data_len[j][0][0][4][0] 表示提取的是瞬态时域数据中的Ice,如下图所示
作者:biybly