引入 python 库
import scipy.io
import numpy as np
import pandas as pd
函数实现
假设 mat 文件中有一个结构体数组的数据名为 data
def create_pd(matValue):
# 初始化一个字典来存储数据
data_dict = {}
# 提取所有字段名
field_names = matValue.dtype.names
# 初始化字典的键
for field in field_names:
data_dict[field] = []
# 解析结构体数组并提取数据
for i in range(matValue.shape[0]):
# 获取第 i 个结构体
struct = matValue[i, 0]
# 提取每个字段的值
for field in field_names:
value = struct[field]
# 如果值是数组,展开它
if isinstance(value, np.ndarray) and value.size == 1:
value = value[0, 0] if value.shape[0] == 1 else value.flatten()
data_dict[field].append(value)
# 将字典转换为 DataFrame
df = pd.DataFrame(data_dict)
# 显示 DataFrame
return df
def load_struct_mat(mat_file , valueKey = "data"):
mat = scipy.io.loadmat(mat_file + ".mat")
list = create_pd(mat[valueKey])
return list
使用方法
df = load_struct_mat("data.mat", "data")
# df 的类型就是 pandas.DataFrame
df.to_csv("data.csv", index = False)