Python 读写 Matlab Mat 格式数据的操作

作者:AIHGF 时间:2023-08-23 01:21:12 

1. 非 matlab v7.3 files 读写


import scipy.io as sio
import numpy
# matFile 读取
matFile = 'matlabdata.mat'
datas = sio.loadmat(matFile)
# 加载 matFile 内的数据
# 假设 mat 内保存的变量为 matlabdata
matlabdata = datas['matlabdata']

# matFile 写入
save_matFile = 'save_matlabdata.mat'
save_matlabdata = np.array([1,2,3,4,5])
sio.savemat(save_matFile, {'array':save_matlabdata})

2. matlab v7.3 files 读取

如果 matlab 保存 data 时,采用的是 ‘-v7.3',scipy.io.loadmat函数加载数据会出现错误:

File "/usr/local/lib/python2.7/dist-packages/scipy/io/matlab/mio.py", line 64, in mat_reader_factory
raise NotImplementedError('Please use HDF reader for matlab v7.3 files')
NotImplementedError: Please use HDF reader for matlab v7.3 files

可以采用:


import h5py
with h5py.File('matlabdata.mat', 'r') as f:
   f.keys() # matlabdata.mat 中的变量名
datas = h5py.File('matlabdata.mat')['matlabdata'].value

补充:【Matlab/Python】Matlab和Python之间的数据传输

很多时候,我们需要把matlab里的数据保存下来,然后用python来处理。

方法一(.mat格式)

直接将matlab的数据存储成.mat格式,然后在python中利用scipy.io中的loadmat函数来读取


import scipy.io     as sio
data = sio.loadmat(...)

方法二(.h5格式)

当要存储的.mat文件比较大时,matlab中需要用save -v7.3才能存储。但是利用方法一在python中读取时,会不支持。可以用以下方法读取


with h5py.File("mydata.mat") as f:
   data = f["mydata"][:]

可以正确读取数据,但是数组维度会倒过来,即本来是(2,3,4,5),读出来会是(5,4,3,2)

但是只有.mat数据用save -v7.3保存时,才能用此方法读取,否则,应用方法一读取

所以可以在matlab中将数据保存成.h5格式,统一按照方法二来读取

matlab中存储.h5格式用如下方法


h5create('data.h5','/data',[2,3,4,5]);
data = rand(2,3,4,5)
h5write('data.h5','/data',data)

但是用python读取时,矩阵维度仍然会倒过来

来源:https://blog.csdn.net/zziahgf/article/details/79131850

标签:Python,读写,Matlab,Mat
0
投稿

猜你喜欢

  • 详解Python中的null是什么

    2022-11-30 15:33:56
  • MYSQL慢查询和日志实例讲解

    2024-01-26 12:20:35
  • Python深度学习实战PyQt5菜单和工具栏功能作用

    2021-04-04 16:09:40
  • python获得一个月有多少天的方法

    2022-02-21 00:55:15
  • python实现大转盘抽奖效果

    2023-12-16 13:50:30
  • 基于keras中的回调函数用法说明

    2023-06-01 14:27:48
  • 简单了解为什么python函数后有多个括号

    2021-05-11 03:29:35
  • Python标准库之zipfile和tarfile模块的使用

    2022-06-08 04:00:11
  • 浅谈javascript 函数表达式和函数声明的区别

    2024-04-27 15:19:39
  • django主动抛出403异常的方法详解

    2023-03-28 17:40:10
  • python数字图像处理实现直方图与均衡化

    2021-04-01 14:44:59
  • python3操作mysql数据库的方法

    2023-07-28 15:48:27
  • Python 利用切片从列表中取出一部分使用的方法

    2021-04-05 14:14:19
  • Python 的描述符 descriptor详解

    2021-03-04 21:14:17
  • Linux安装Python3.8.1的教程详解

    2022-03-26 10:43:24
  • PHP平滑关闭/重启的实现方法

    2023-10-05 08:48:29
  • Windows安装MySQL8.0.28.0.msi方式(图文详解)

    2024-01-24 14:55:24
  • 基于Python实现电影售票系统

    2021-02-21 16:26:05
  • Python之——生成动态路由轨迹图的实例

    2023-01-11 17:50:37
  • 如何通过阿里云实现动态域名解析DDNS的方法

    2022-05-30 23:04:50
  • asp之家 网络编程 m.aspxhome.com