详解如何在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操作xml文件示例
Apr 07 Python
使用Python脚本将文字转换为图片的实例分享
Aug 29 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
Sep 19 Python
Python实现拷贝多个文件到同一目录的方法
Sep 19 Python
利用python如何处理百万条数据(适用java新手)
Jun 06 Python
python视频按帧截取图片工具
Jul 23 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
关于pytorch多GPU训练实例与性能对比分析
Aug 19 Python
导致python中import错误的原因是什么
Jul 01 Python
python在CMD界面读取excel所有数据的示例
Sep 28 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
Oct 27 Python
如何用python批量调整视频声音
Dec 22 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获取从html表单传递数组的方法
2015/03/20 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
php json转换相关知识(小结)
2018/12/21 PHP
js tab效果的实现代码
2009/12/26 Javascript
JavaScript下利用fso判断文件是否存在的代码
2010/12/11 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
2014/06/30 Javascript
五种js判断是否为整数类型方式
2015/12/03 Javascript
jQuery Validation PlugIn的使用方法详解
2015/12/18 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
Python创建日历实例
2014/08/21 Python
通过源码分析Python中的切片赋值
2017/05/08 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
解决Keras 中加入lambda层无法正常载入模型问题
2020/06/16 Python
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
汉语言文学职业规划
2014/02/14 职场文书
2014年元旦促销活动方案
2014/02/22 职场文书
恶搞卫生巾广告词
2014/03/18 职场文书
食品安全宣传标语
2014/06/07 职场文书
国贸专业毕业求职信
2014/06/11 职场文书
新闻编辑求职信
2014/07/13 职场文书
2014年小学教导处工作总结
2014/12/19 职场文书
归元寺导游词
2015/02/06 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫
在虚拟机中安装windows server 2008的图文教程
2022/06/28 Servers