详解如何在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 相关文章推荐
可用于监控 mysql Master Slave 状态的python代码
Feb 10 Python
Python列表推导式的使用方法
Nov 21 Python
Python使用MySQLdb for Python操作数据库教程
Oct 11 Python
Python基于回溯法子集树模板解决找零问题示例
Sep 11 Python
通过Pandas读取大文件的实例
Jun 07 Python
Tensorflow使用tfrecord输入数据格式
Jun 19 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
python+opencv实现摄像头调用的方法
Jun 22 Python
Python实现计算长方形面积(带参数函数demo)
Jan 18 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
Apr 20 Python
基于Python和openCV实现图像的全景拼接详细步骤
Oct 05 Python
Python绘制散点图之可视化神器pyecharts
Jul 07 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 判断字符串中是否包含html标签
2014/02/17 PHP
php实现的css文件背景图片下载器代码
2014/11/11 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
2015/12/08 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
微信小程序 video组件详解
2016/10/25 Javascript
jQuery实现的分页功能示例
2017/01/22 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
JS中关于正则的巧妙操作
2017/08/31 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
js+css3实现炫酷时钟
2020/08/18 Javascript
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
在vue中使用vant TreeSelect分类选择组件操作
2020/11/02 Javascript
Python open读写文件实现脚本
2008/09/06 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
Python爬虫防封ip的一些技巧
2020/08/06 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
澳大利亚潮流尖端的快时尚品牌:Cotton On
2016/09/26 全球购物
"序列点" 是什么
2016/07/29 面试题
remote接口和home接口主要作用
2013/05/15 面试题
《傅雷家书》教学反思
2014/04/20 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
二手房购房协议书范本
2014/10/05 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
js基础语法与maven项目配置教程案例
2021/07/15 Javascript
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫