Python读写MATLAB数据文件(*.mat)详解
本文介绍在Python中读写MATLAB数据文件(.mat)的方法。利用scipy.io模块中的loadmat和savemat函数,结合numpy处理数组数据,实现Python与MATLAB之间的数据交换。文中提供了读取和保存.mat文件的示例代码,适用于深度学习框架如Caffe的数据处理场景。
背景
在深度学习开发中,常采用MATLAB进行图像预处理,因其处理图片简便高效;随后使用Python生成所需的lmdb文件并执行测试以产生结果。因此,MATLAB从图像处理中获得的标签信息通常以.mat文件形式供Python读取,同时Python生成的结果数据也需要MATLAB进行后续处理(尽管也可使用txt文件,但需自行处理结构信息,较为繁琐)。
介绍
MATLAB与Python之间的数据传输主要基于MATLAB的文件格式.mat。Python中的numpy和scipy库提供了相关函数,能够有效地对.mat文件数据进行读写和处理。
在此过程中,numpy主要用于提供Array功能以映射MATLAB中的Matrix,而scipy则提供了loadmat和savemat两个函数,分别用于读取和写入.mat文件。
以下是一个简单的测试程序,具体函数用法可参考帮助文档:
import scipy.io as sio
import matplotlib.pyplot as plt
import numpy as np
#matlab文件名
matfn=u'E:/python/测试程序/162250671_162251656_1244.mat'
data=sio.loadmat(matfn)
plt.close('all')
xi=data['xi']
yi=data['yi']
ui=data['ui']
vi=data['vi']
plt.figure(1)
plt.quiver( xi[::5,::5],yi[::5,::5],ui[::5,::5],vi[::5,::5])
plt.figure(2)
plt.contourf(xi,yi,ui)
plt.show()
sio.savemat('saveddata.mat', {'xi': xi,'yi': yi,'ui': ui,'vi': vi})
示例2
import scipy.io as sio
import numpy as np
###下面是讲解python怎么读取.mat文件以及怎么处理得到的结果###
load_fn = 'xxx.mat'
load_data = sio.loadmat(load_fn)
load_matrix = load_data['matrix'] #假设文件中存有字符变量是matrix,例如matlab中save(load_fn, 'matrix');当然可以保存多个save(load_fn, 'matrix_x', 'matrix_y', ...);
load_matrix_row = load_matrix[0] #取了当时matlab中matrix的第一行,python中数组行排列
###下面是讲解python怎么保存.mat文件供matlab程序使用###
save_fn = 'xxx.mat'
save_array = np.array([1,2,3,4])
sio.savemat(save_fn, {'array': save_array}) #和上面的一样,存在了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}) #同理,只是存入了两个不同的变量供
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









