详解如何在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使用beautifulsoup从爱奇艺网抓取视频播放
Jan 23 Python
Python 正则表达式(转义问题)
Dec 15 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
磁盘垃圾文件清理器python代码实现
Aug 24 Python
浅谈Python中的全局锁(GIL)问题
Jan 11 Python
python全栈知识点总结
Jul 01 Python
python3 requests库实现多图片爬取教程
Dec 18 Python
Python模块 _winreg操作注册表
Feb 05 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
pandas dataframe 中的explode函数用法详解
May 18 Python
PyQt5爬取12306车票信息程序的实现
May 14 Python
python中tkinter复选框使用操作
Nov 11 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
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
php array_slice函数的使用以及参数详解
2008/08/30 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
javascript 自动转到命名锚记
2009/01/10 Javascript
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
老生常谈onBlur事件与onfocus事件(js)
2016/07/09 Javascript
微信小程序checkbox组件使用详解
2018/01/31 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
[57:09]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第一场 1月26日
2021/03/11 DOTA
Python执行时间的计算方法小结
2017/03/17 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
python实现扫描ip地址的小程序
2019/04/16 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
快速实现一个简单的canvas迷宫游戏的示例
2018/07/04 HTML / CSS
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
玩具反斗城天猫官方旗舰店:享誉全球的玩具店
2017/10/10 全球购物
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
售后主管岗位职责
2013/12/08 职场文书
《沉香救母》教学反思
2014/04/19 职场文书
违纪检讨书
2015/01/27 职场文书
安全知识竞赛主持词
2015/06/30 职场文书
导游词之包公祠
2019/11/25 职场文书
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle