python读取mat文件中的struct问题

目录
  • python读取mat文件中的struct
    • mat文件结构如下
    • 经过查找资料,总结如下
    • 解决办法
  • python读取mat文件报错

python读取mat文件中的struct

All devils are in the details,做个笔记。

mat文件结构如下

ground_truth_data 是1x1的struct(结构体),包含2个字段,一个是list,一个是imgszie.如图1所示

图1

list是一个352x1的cell,点开后如图2,可以看到list中的每一个cell又由1x1的strcuct组成.

图2

点开1x1的struct如图3:

图3 

如果我现在想把这352个1x1的struct值(包括imgname和bbox)都用python提出来然后以txt的格式存储,应该怎么做?

经过查找资料,总结如下

1、我使用scipy.io模块加载时,pycharm控制台报错如下:

这是因为scipy.io只能支持matlab版本小于v7.3版本的mat文件。

换句话说就是,如果你的matlab版本比较旧,保存的mat格式为-v7.3及其以前的版本,可以用scipy.io读取. 如果是比较新的matlab保存的mat文件,就只能用h5py模块载入了,并且它支持大文件的存储和读取.

解决办法

改用h5py模块载入mat并读取struct值,代码如下

import h5py
data = h5py.File("D:\\Build_my_net\\tensorflow-vgg-master\\tensorflow-vgg-master\help_others\\train_ground_truth_data.mat")
test = data['ground_truth_data/list']
print(test.shape)  #执行完这一行,输出的是(1,352) ,这里和python中numpy数组的shape返回的不一
#样,这里第一个值表示的列,第二个值表示的是行
for i in range(test.shape[1]):   #test.shape[1]的值是352
    for k in data[(test[0][i])].values():
        print(k[:])

如果有字符,记得用chr()函数转成字符后显示.

python读取mat文件报错

在用python读取mat文件时报了以下错误:OSError: Unable to create file

发现是自己mat文件格式的问题,原来直接在matlab中右键另存cell文件,但这种文件python打不开,需要用save函数保存才行

eg:

.save('Gaitdata.mat', 'originalData', '-v7.3') % v7.3 so that it is readable by h5py

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python读取.mat文件的数据及实例代码

    首先导入scipy的包 from scipy.io import loadmat 然后读取 m = loadmat("F:/__identity/activity/论文/data/D001.mat") 注意这里m是一个dict数据结构 >>> m {'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Mon Aug 15 22:16:43 2011', '__globals__': [],

  • python读取和保存mat文件的方法

    目录 一.mat文件 二.python中读取mat文件 1.读取文件 2.保存文件 首先我们谈谈MarkDown编辑器,我感觉些倒是挺方便的,因为用惯了LaTeX,对于MarkDown还是比较容易上手的,但是我发现,MarkDown中有这样几个问题一直没能找到具体的解决方法: 图片大小的问题.在LaTeX中我们可以调整图片的大小,以适应整个文本:字体,字号大小的设置.在MarkDown里面标题倒是挺大的,但是正文却显得太小,不是很喜欢里面的字体. 主要发现上面两个问题导致编辑出来的文本挺难看.

  • python读取并写入mat文件的方法

    先给大家介绍下python读取并写入mat文件的方法 用matlab生成一个示例mat文件: clear;clc matrix1 = magic(5); matrix2 = magic(6); save matData.mat 用python3读取并写入mat文件: import scipy.io data = scipy.io.loadmat('matData.mat') # 读取mat文件 # print(data.keys()) # 查看mat文件中的所有变量 print(data['ma

  • python读取mat文件中的struct问题

    目录 python读取mat文件中的struct mat文件结构如下 经过查找资料,总结如下 解决办法 python读取mat文件报错 python读取mat文件中的struct All devils are in the details,做个笔记. mat文件结构如下 ground_truth_data 是1x1的struct(结构体),包含2个字段,一个是list,一个是imgszie.如图1所示 图1 list是一个352x1的cell,点开后如图2,可以看到list中的每一个cell又由

  • python读取mat文件生成h5文件的实现

    目录 读取mat文件生成h5文件 1. Matlab生成 .mat 文件 2. 读取 .mat 文件 读取mat文件 基于h5py库 两种数据结构 读取代码 读取mat文件生成h5文件 1. Matlab生成 .mat 文件 p = rand(1,10); q = ones(10); save('pqfile.mat','p','q') 当用python读取 pqfile.mat 这个文件时,可以通过get§, get(q) 分别获得p.q的值. 2. 读取 .mat 文件 import sci

  • python读取txt文件中特定位置字符的方法

    如下所示: # -*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf8') fp = open("resources.txt", "r") sample = fp.readlines() file=open("test.txt", "w") for line in sample: sample_ = line.split('固定字符')

  • Python读取mat文件,并转为csv文件的实例

    初学Python,遇到需要将mat文件转为csv文件,看了很多博客,最后找到了解决办法,代码如下: #方法1 from pandas import Series,DataFrame import pandas as pd import numpy as np import h5py datapath = 'E:/workspacelxr/contem/data.mat' file = h5py.File(datapath,'r') file.keys() def Print(name):prin

  • Python读取mat文件,并保存为pickle格式的方法

    这两天在搞Theano,要把mat文件转成pickle格式载入Python. Matlab是把一维数组当做n*1的矩阵的,但Numpy里还是有vector和matrix的区别,Theano也是对二者做了区分. 直接把代码贴出来吧,好像也没什么可讲的 = = from scipy.io import loadmat import numpy, cPickle data_dict=loadmat(r'E:\dataset\CIFAR10\CIFAR10_small.mat') #need an r!

  • 基于python读取.mat文件并取出信息

    这篇文章主要介绍了基于python读取.mat文件并取出信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 导入所需包 from scipy.io import loadmat 读取.mat文件 随便从下面文件里读取一个: m = loadmat('H_BETA.mat') # 读出来的 m 是一个dict(字典)数据结构 读出来的m内容: m:{'__header__': b'MATLAB 5.0 MAT-file, Platform: GL

  • Python读取excel文件中带公式的值的实现

    在进行excel文件读取的时候,我自己设置了部分直接从公式获取单元格的值 但是用之前的读取方法进行读取的时候,返回值为空 import os import xlrd from xlutils.copy import copy file_path = os.path.abspath(os.path.dirname(__file__)) # 获取当前文件目录 print(file_path) root_path = os.path.dirname(file_path) # 获取文件上级目录 data

  • Python读取excel文件中的数据,绘制折线图及散点图

    目录 一.导包 二.绘制简单折线 三.pandas操作Excel的行列 四.pandas处理Excel数据成为字典 五.绘制简单折线图 六.绘制简单散点图 一.导包 import pandas as pd import matplotlib.pyplot as plt 二.绘制简单折线 数据:有一个Excel文件lemon.xlsx,有两个表单,表单名分别为:Python 以及student. Python的表单数据如下所示: student的表单数据如下所示:  1.在利用pandas模块进行

  • Python第三方库h5py_读取mat文件并显示值的方法

    mat数据格式是Matlab默认保存的数据格式.在Python中,我们可以使用h5py库来读取mat文件. >>> import h5py >>> data = h5py.File("**.mat") >>> test = data["digitStruct/name"] #<HDF5 dataset "name": shape (13068, 1), type "|O&quo

随机推荐