首页 > 解决方案 > 如何使用 hd5f 访问 *.mat 文件中的嵌套结构?

问题描述

我尝试访问 matlab 文件 (*.mat) 的以下结构:

父matlab结构

其中包含以下一组结构

嵌套结构

我尝试使用hd5f python lib访问每个结构内的字段

在此处输入图像描述

使用以下代码:

mat_dict = h5py.File(file_path, 'r')
result = mat_dict['JKPRR']['results']['ChangingKnob'][0]['result']

但显然我不能深入:

result = mat_dict['JKPRR']['results']['ChangingKnob'][0]

有谁知道我怎样才能去更深的领域?

标签: pythonpython-3.xmatlabdictionary

解决方案


以下问题的解决方案和讨论:

https://github.com/h5py/h5py/issues/1668

首先,简单一点:ChangingKnob 数据集看起来是 2D 的,所以要取出一个项目,您需要两个索引:

mat_dict['JKPRR']['results']['ChangingKnob'][0, 0]

这是等效的,但更容易阅读:

mat_dict['JKPRR/results/ChangingKnob'][0, 0]

看起来 Matlab 正在数据集中存储 HDF5 引用(一种链接),所以你需要遵循参考:

> ref = mat_dict['JKPRR/results/ChangingKnob'][0, 0] dataset =
> mat_dict[ref]

希望在那之后您可以使用 dataset['result'] 来访问一个字段,除非 Matlab 遇到了更多障碍。


推荐阅读