尽管进行了数小时的搜索, 但我还没有找到如何访问Matlabv7.3的结构。希望答案的这一部分对某人有所帮助, 我很高兴看到更多说明。
因此, 让我们开始吧(我认为[0][0]来自Matlab, 提供了所有尺寸):
f = h5py.File('filename', 'r')
f['varname'][0][0]
给出: < HDF5 object reference >
再次将此链接传递给f:
f[f['varname'][0][0]]
它提供一个数组: 将其转换为numpy数组并提取值(或递归获取另一个< HDF5 object reference >:
np.array(f[f['varname'][0][0]])[0][0]
如果磁盘访问缓慢, 则可以将其加载到内存中。
进一步的编辑: 经过大量无用的搜索之后, 我的最后一个解决方案(我真的希望有人可以有更好的解决方案! )是从python调用Matlab, 这是非常简单和快速的:
eng = matlab.engine.start_matlab() # first fire up a Matlab instance
eng.quit()
eng = matlab.engine.connect_matlab() # or connect to an existing one
eng.sqrt(4.0)
x = 4.0
eng.workspace['y'] = x
a = eng.eval('sqrt(y)')
print(a)
x = eng.eval('parameterised_function_in_Matlab(1, 1)', nargout=1)
a = eng.eval('Structured_variable{1}{2}.object_name') # (nested cell, cell, object)