详解如何在python中读写和存储matlab的数据文件(*.mat)


Posted in Python onFebruary 24, 2018

背景

在做deeplearning过程中,使用caffe的框架,一般使用matlab来处理图片(matlab处理图片相对简单,高效),用python来生成需要的lmdb文件以及做test产生结果。所以某些matlab从图片处理得到的label信息都会以.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 相关文章推荐
Python中__init__和__new__的区别详解
Jul 09 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
Jan 29 Python
PyQt5每天必学之拖放事件
Aug 27 Python
python检测主机的连通性并记录到文件的实例
Jun 21 Python
Python里字典的基本用法(包括嵌套字典)
Feb 27 Python
基于python的ini配置文件操作工具类
Apr 24 Python
python可视化爬虫界面之天气查询
Jul 03 Python
如何通过50行Python代码获取公众号全部文章
Jul 12 Python
详解python列表(list)的使用技巧及高级操作
Aug 15 Python
TensorFlow——Checkpoint为模型添加检查点的实例
Jan 21 Python
Django bulk_create()、update()与数据库事务的效率对比分析
May 15 Python
基于python实现音乐播放器代码实例
Jul 01 Python
使用python和pygame绘制繁花曲线的方法
Feb 24 #Python
python3操作微信itchat实现发送图片
Feb 24 #Python
python自动12306抢票软件实现代码
Feb 24 #Python
浅谈Python中的zip()与*zip()函数详解
Feb 24 #Python
python模仿网页版微信发送消息功能
Feb 24 #Python
python2.7读取文件夹下所有文件名称及内容的方法
Feb 24 #Python
python opencv之分水岭算法示例
Feb 24 #Python
You might like
php从数组中随机抽取一些元素的代码
2012/11/05 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
2020/07/19 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
javascript数组操作总结和属性、方法介绍
2014/04/05 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
深入理解vue.js中的v-if和v-show
2017/06/22 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
2018/01/04 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
Django中对数据查询结果进行排序的方法
2015/07/17 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
python3将变量输入的简单实例
2020/08/19 Python
Python实现区域填充的示例代码
2021/02/03 Python
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
介绍一下RMI的基本概念
2016/12/17 面试题
软件工程专业推荐信
2013/10/28 职场文书
婚礼答谢宴主持词
2014/03/14 职场文书
追悼词范文大全
2015/06/23 职场文书
决心书格式范文
2015/09/23 职场文书
python中的装饰器该如何使用
2021/06/18 Python
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS