h5py将MATLAB中mat结构体转换为Python的dict形式,Python代码如下:
def mat2dict(path, strname):
struct_mat = h5py.File(path,'r')
struct_dict = dict()
struct_keys = list(struct_mat[strname].keys())
for i in range(len(struct_keys)):
value_list = []
if strname is not None:
if struct_mat[strname][struct_keys[i]].dtype != '<f8':
strlist = [u''.join(chr(c) for c in struct_mat[strname][struct_keys[i]])]
value_list.append(strlist)
temp_dict = {
struct_keys[i]:np.array(value_list)
}
struct_dict.update(temp_dict)
else:
num = len(struct_mat[strname][struct_keys[i]][()])
for j in range(num):
value_list.append(struct_mat[strname][struct_keys[i]][()][j][0])
temp_dict = {
struct_keys[i]:np.array(value_list)
}
struct_dict.update(temp_dict)
return struct_dict