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

物联沃分享整理
物联沃-IOTWORD物联网 » NASA IGBT 数据提取(Python)

发表回复