Несмотря на часы поиска, я также не нашел, как получить доступ к структурам Matlab v7.3. Надеюсь, этот частичный ответ кому-то поможет, и я был бы очень рад увидеть дополнительные указатели.
Итак, начнем с (я думаю, что [0] [0] возникает из Matlab, предоставляющего все измерениям):
f = h5py.File('filename', 'r')
f['varname'][0][0]
дает: ‹Ссылка на объект HDF5>
Передайте эту ссылку снова в f:
f[f['varname'][0][0]]
который дает массив: преобразуйте его в массив numpy и извлеките значение (или, рекурсивно, другую ссылку на объект ‹HDF5>:
np.array(f[f['varname'][0][0]])[0][0]
Если доступ к диску медленный, возможно, поможет загрузка в память.
Дальнейшее редактирование: после долгих бесполезных поисков мой последний обходной путь (я действительно надеюсь, что у кого-то есть лучшее решение!) Вызывал Matlab из python, что довольно просто и быстро:
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)
person
Stephen Morrell
schedule
13.02.2019