详解如何在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插入排序算法的实现代码
Nov 21 Python
Python数据结构之Array用法实例
Oct 09 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
Jan 20 Python
python机器学习之神经网络(三)
Dec 20 Python
5款非常棒的Python工具
Jan 05 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
Jan 06 Python
python3 打开外部程序及关闭的示例
Nov 06 Python
在PyCharm中批量查找及替换的方法
Jan 20 Python
Python中remove漏删和索引越界问题的解决
Mar 18 Python
Python中内建模块collections如何使用
May 27 Python
Django正则URL匹配实现流程解析
Nov 13 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
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 文件上传全攻略
2010/04/28 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
2011/10/31 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
php Xdebug的安装与使用详解
2013/06/20 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
php实现模拟登陆方正教务系统抓取课表
2015/05/19 PHP
YII Framework教程之异常处理详解
2016/03/14 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
2019/12/12 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
javascript中运用闭包和自执行函数解决大量的全局变量问题
2010/12/30 Javascript
jqgrid 简单学习笔记
2011/05/03 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
JavaScript实现多个重叠层点击切换效果的方法
2015/04/24 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
jQuery UI实现动画效果代码分享
2018/08/19 jQuery
JavaScript实现随机点名程序
2020/03/25 Javascript
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
python实现闹钟定时播放音乐功能
2018/01/25 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
Django中的ajax请求
2018/10/19 Python
详解Python3 pandas.merge用法
2019/09/05 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
英国天然宝石首饰购买网站:Gemondo Jewellery
2018/10/23 全球购物
4S店售后客服自我评价
2014/04/09 职场文书
街道务虚会发言材料
2014/10/20 职场文书
高三英语教学计划
2015/01/23 职场文书
董事长年会致辞
2015/07/29 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
担保书怎么写 ?
2019/04/22 职场文书
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏