详解如何在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超简单解决约瑟夫环问题
May 12 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
Jan 09 Python
Python用sndhdr模块识别音频格式详解
Jan 11 Python
python编程培训 python培训靠谱吗
Jan 17 Python
Flask框架信号用法实例分析
Jul 24 Python
浅谈Python爬虫基本套路
Mar 25 Python
Python中typing模块与类型注解的使用方法
Aug 05 Python
Django自定义模板过滤器和标签的实现方法
Aug 21 Python
Python实现自定义读写分离代码实例
Nov 16 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
Python 3.9的到来到底是意味着什么
Oct 14 Python
Python 类,对象,数据分类,函数参数传递详解
Sep 25 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
B2K与车机的中波PK
2021/03/02 无线电
PHP4实际应用经验篇(6)
2006/10/09 PHP
我的群发邮件程序
2006/10/09 PHP
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
2014/06/27 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
探讨js中的双感叹号判断
2013/11/11 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
纯js代码实现简单计算器
2015/12/02 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
layui输入框只允许输入中文且判断长度的例子
2019/09/18 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
python 创建弹出式菜单的实现代码
2017/07/11 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
python3实现windows下同名进程监控
2018/06/21 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
pandas去除重复列的实现方法
2019/01/29 Python
Python 微信之获取好友昵称并制作wordcloud的实例
2019/02/21 Python
Python django框架应用中实现获取访问者ip地址示例
2019/05/17 Python
TensorBoard 计算图的查看方式
2020/02/15 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
优秀体育委员自荐书
2014/01/31 职场文书
2015年党建工作汇报材料
2015/06/25 职场文书
详解用Python把PDF转为Word方法总结
2021/04/27 Python
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技