详解如何在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中optparse模块使用浅析
Jan 01 Python
Python列表(list)常用操作方法小结
Feb 02 Python
Python多线程编程(八):使用Event实现线程间通信
Apr 05 Python
Python读写配置文件的方法
Jun 03 Python
Python操作串口的方法
Jun 17 Python
Python编写电话薄实现增删改查功能
May 07 Python
numpy中loadtxt 的用法详解
Aug 03 Python
python 快速把超大txt文件转存为csv的实例
Oct 26 Python
用python3教你任意Html主内容提取功能
Nov 05 Python
python对常见数据类型的遍历解析
Aug 27 Python
基于Pytorch SSD模型分析
Feb 18 Python
pytorch 中的重要模块化接口nn.Module的使用
Apr 02 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
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
深入php常用函数的使用汇总
2013/06/08 PHP
对于PHP 5.4 你必须要知道的
2013/08/07 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
2013/12/24 PHP
php读取mysql的简单实例
2014/01/15 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
2016/02/25 Javascript
JavaScript中文件上传API详解
2016/04/01 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
BootStrap实现带关闭按钮功能
2017/02/15 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
Vue filters过滤器的使用方法
2017/07/14 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
微信小程序点击view动态添加样式过程解析
2020/01/21 Javascript
jquery实现广告上下滚动效果
2021/03/04 jQuery
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
python单例模式的多种实现方法
2019/07/26 Python
使用python切片实现二维数组复制示例
2019/11/26 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
Django REST framwork的权限验证实例
2020/04/02 Python
基于python 取余问题(%)详解
2020/06/03 Python
python如何将图片转换素描画
2020/09/08 Python
办公室副主任职责范本
2014/03/08 职场文书
创文明城市标语
2014/06/16 职场文书
2015年法院工作总结范文
2015/04/28 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技