Bonjour à tous,

J'utilise NumPy/SciPy pour créer une structure de données en python, que je souhaite par la suite exploiter sous Matlab.

Je suis parti du principe que un dictionnaire python correspond à une structure matlab. J'ai voulu inclure une liste de dictionnaires (b et c, qui ont tous les mêmes champs : name et value) dans un dictionnaire : a.

Pour l'instant, mon script d'exemple fait celà :

Script Python :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
import scipy.io
 
b={'name':'aaa', 'value':3}
c={'name':'bbb', 'value':5}
a={'field':[b, c]}
scipy.io.savemat('saved_struct.mat', a)
Résultat sous Matlab :
>> a=load('Z:\...\saved_struct.mat')
a =
field: {2x1 cell}

>> a.field
ans =
[1x1 struct]
[1x1 struct]
"field" est une cellule 2x1, je dois faire a.field{1} ou {2} pour accéder aux 2 sous-structures.

Je souhaiterais que ma structure "a" ressemble plutot à ceci :

Structure sous Matlab :
b =
name: 'aaa'
value: 3

c =
name: 'bbb'
value: 5

>> a.field=[b,c]
a =
field: [1x2 struct]

>> a.field
ans =
1x2 struct array with fields:
name
value
"field" n'est plus une cellule, mais une structure à 2 dimensions. J'accède aux 2 sous-structures par : a.field(1) ou (2).

Comment créer une telle structure en Python ???
J'ai pensé utiliser les "array()" de NumPy mais j'obtiens toujours des cellules 2x1.

Un grand MEEEERCIII d'avance pour votre aide !! Je rame....