1、.mat文件
matlab和python间的数据传输一般是基于matlab的文件格式.mat,python中numpy和scipy提供了一些函数,可以很好的对.mat文件的数据进行读写和处理。在这里numpy作用是提供Array功能映射matlab里面的Matrix,而scipy提供了两个函数loadmat和savemat来读写.mat文件。
# python 读写.mat文件
import scipy.io as sio
import numpy as np
# python读取.mat文件
load_fn = ‘xxx.mat’
load_data = sio.loadmat(load_fn)
# python 保存.mat文件
save_fn = ‘xxx.mat’
save_array = np.array([1,2,3,4])
sio.savemat(save_fn,{‘array’:save_array})
save_array_x = np.array([1,2,3,4])
save_array_y = np.array([5,6,7,8])
sio.savemat(save_fn, {‘array_x’: save_array_x, ‘array_x’: save_array_x})
python写好.mat文件,matlab里面直接读入.mat文件。但是针对于数量大的数据,.mat文件无法存储,建议使用.h5文件。
2、.h5文件
python写入.h5文件
# python写入.h5文件,matlab读入.h5文件
# python写.h5文件
import h5py
import cPickle as pickle
import sys
import numpy as np
if __name__ == “__main__”:
matrix = np.array([1,2,3,4])
f = h5py.File(‘data.h5′,’w’)
f[‘matrix’] = matrix
f.close()
# matlab读取.h5文件
matrix = h5read(‘data.h5′,’/matrix’);
python存储的.h5文件中的矩阵matlab读取时候矩阵维度会倒转(在python中使用matrix.transpose((维度1,维度2,…,维度n))命令先进行翻转再写入,matlab读取的时候就是正常维度)。
PS:图片传输的时候,uint8图片数据传到matlab里会变成double类型数据。