详解如何在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抽象基类用法实例分析
Jun 04 Python
Python的装饰器用法学习笔记
Jun 24 Python
Python封装原理与实现方法详解
Aug 28 Python
python并发编程多进程 互斥锁原理解析
Aug 20 Python
Python使用matplotlib实现交换式图形显示功能示例
Sep 06 Python
python 使用opencv 把视频分割成图片示例
Dec 12 Python
python报错: 'list' object has no attribute 'shape'的解决
Jul 15 Python
Python3爬虫关于识别点触点选验证码的实例讲解
Jul 30 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
Sep 03 Python
详解Python中第三方库Faker
Sep 25 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
Oct 15 Python
Python爬虫开发与项目实战
Dec 16 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基于IMAP收取邮件的方法示例
2017/08/07 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
javascript 动态table添加colspan\rowspan 参数的方法
2009/07/25 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
js实现获取鼠标当前的位置
2016/12/14 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
Python3基础教程之递归函数简单示例
2019/06/07 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
教师辞职报告范文
2014/01/20 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
化工实习心得体会
2014/09/09 职场文书
2014年医院十一国庆节活动方案
2014/09/15 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
离婚案件答辩状
2015/05/22 职场文书
原告代理词范文
2015/05/25 职场文书
工商局调档介绍信
2015/10/22 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python
Go 语言中 20 个占位符的整理
2021/10/16 Golang
python实现一个简单的贪吃蛇游戏附代码
2022/06/28 Python