详解如何在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 相关文章推荐
wxpython 学习笔记 第一天
Mar 16 Python
用Python从零实现贝叶斯分类器的机器学习的教程
Mar 31 Python
Python制作简易注册登录系统
Dec 15 Python
在python3.5中使用OpenCV的实例讲解
Apr 02 Python
根据DataFrame某一列的值来选择具体的某一行方法
Jul 03 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
Oct 22 Python
python3 assert 断言的使用详解 (区别于python2)
Nov 27 Python
pytorch 数据处理:定义自己的数据集合实例
Dec 31 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
Jan 14 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
Dec 10 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
Dec 17 Python
java字符串格式化输出实例讲解
Jan 06 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
图书管理程序(二)
2006/10/09 PHP
php download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
PHP 程序员应该使用的10个组件
2009/10/31 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
php将字符串转换成16进制的方法
2015/03/17 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
php语法检查的方法总结
2019/01/21 PHP
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
javascript与webservice的通信实现代码
2010/12/25 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
vue模仿网易云音乐的单页面应用
2019/04/24 Javascript
vue 判断元素内容是否超过宽度的方式
2020/07/29 Javascript
React实现轮播效果
2020/08/25 Javascript
python&MongoDB爬取图书馆借阅记录
2016/02/05 Python
Python增量循环删除MySQL表数据的方法
2016/09/23 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
python 实现一次性在文件中写入多行的方法
2019/01/28 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
Python pip 安装与使用(安装、更新、删除)
2019/10/06 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
澳大利亚药房在线:ThePharmacy
2017/10/04 全球购物
WiFi云数码相框:Nixplay
2018/07/05 全球购物
便利店投资的创业计划书
2014/01/12 职场文书
大学生旷课检讨书
2014/01/22 职场文书
爱情寄语大全
2014/04/09 职场文书
管理标语大全
2014/06/24 职场文书
婚前协议书范本
2014/10/27 职场文书
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python