Как получить доступ к полям в структуре, импортированной из .mat файла с помощью loadmat в Python?

После этого вопроса, который спрашивает (и ответы), как считать .mat файлы, которые были созданы в использовании Matlab Scipy, я хочу знать, как получить доступ к полям в импортированных структурах.

У меня есть файл в Matlab, из которого я могу импортировать структуру:

>> load bla % imports a struct called G
>> G

G = 

         Inp: [40x40x2016 uint8]
         Tgt: [8x2016 double]
         Ltr: [1x2016 double]
    Relevant: [1 2 3 4 5 6 7 8]

Теперь я хочу сделать то же в Python:

x = scipy.io.loadmat('bla.mat')
>>> x
{'__version__': '1.0', '__header__': 'MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Wed Jun 07 21:17:24 2006', 'G': array([[]], dtype=object), '__globals__': []}
>>> x['G']
array([[]], dtype=object)
>>> G = x['G']
>>> G
array([[]], dtype=object)

Вопрос, как может я получать доступ к членам структуры G: Inp, Tgt, Ltr и Relevant, путем я могу в Matlab?

7
задан Community 23 May 2017 в 12:34
поделиться

1 ответ

Во-первых, я бы порекомендовал обновить до Scipy svn, если это возможно - в последнее время идет активная разработка matlab io с некоторыми действительно значительными ускорениями.

Также, как упоминалось, стоит попробовать использовать struct_as_record = True . Но в противном случае вы сможете получить его, играя в интерактивном режиме.

G - это массив объектов структуры mio - например, вы можете проверить G.shape . В этом случае я думаю, что G = x ['G'] [0,0] должен дать желаемый объект. После этого у вас появится доступ к G.Inp и т. Д.

6
ответ дан 7 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: