Python读写MATLAB数据文件(*.mat)详解

Elena
Elena
发布时间:2026-10-13 | 2人浏览过
原创

本文介绍在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}) #同理,只是存入了两个不同的变量供

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表