Siguiendo esta pregunta que pregunta (y responde) cómo leer los archivos .mat que se crearon en Matlab usando Scipy, quiero saber cómo acceder a los campos en las estructuras importadas.
Tengo un archivo en Matlab desde el cual puedo importar una estructura:
>> 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]
Ahora quiero hacer lo mismo en 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)
La pregunta es, ¿cómo puedo acceder a los miembros de la estructura G: Inp
, Tgt
, Ltr
y Relevant
, de la forma que puedo en Matlab?
Primero, recomiendo actualizar a Scipy svn si es posible: ha habido un desarrollo activo de matlab io con algunos incrementos de velocidad realmente dramáticos recientemente.
También como se mencionó, podría valer la pena probar con struct_as_record=True
. Pero, de lo contrario, deberías poder sacarlo jugando interactivamente.
Su G es una matriz de objetos mio struct, por ejemplo, puede verificar G.shape
. En este caso, creo que G = x['G'][0,0]
debe proporcionar el objeto que desea. Entonces deberías poder acceder a G.Inp
etc.