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