最近在linux下面做一个DL的项目,需要要用到python语言读取matlab保存的.mat文件,有一下两种情况:
1、如果你的matlab的版本比较旧,保存的.mat 格式为‘-v7.3’以前的版本,可以采用:scipy.io即可,方法如下:
假如有一个ss_box.mat,格式如下:我们想要读取其中的box的内容,
box: {1x29992 cell}
name: {1x29992 cell}
代码:
import scipy.io as sio
boxes=sio.loadmat(’ss_box.mat‘)['box'].ravel()
这样boxes就是一个list,可以采用boxes[i]获取每个array的内容了,boxes.shape[0]为cell的个数
2、如果你的matlab的版本比较新,保存的.mat格式为‘-v7.3’的版本,由于scipy.io不支持,所以要采用hdf5,方法如下:
代码:
import h5py
import numpy as np
file=h5py.File(‘ss_box.mat’,'r')
raw_data =[file[element[0]][:] for element in file['box']]
这样raw_data是一个list,len(raw_data)获取cell的个数;但是有一个问题就是每个cell的被转置了一个下,因此需 要转回来:box=np.transpose(raw_data[i])