2009-10-06 8 views
2

J'ai une variable exon = [[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10]]]. Je voudrais créer un fichier tapis comme ce qui suitcréer un fichier .mat à partir de python

>> 

exon : [3*2 double] [2*2 double] 

Quand je le code python pour faire la même chose, il montre un message d'erreur. voici mon code python

import scipy.io 
exon = [[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10]]] 
scipy.io.savemat('/tmp/out.mat', mdict={'exon': (exon[0], exon[1])}) 

Il sera grand n'importe qui peut donner une suggestion pour la même chose. merci à l'avance Vipin TS

+2

quel est le message d'erreur? – fortran

Répondre

6

Vous semblez vouloir deux tableaux différents liés au même nom de variable dans Matlab. Ce n'est pas possible. Dans MATLAB vous pouvez avoir des tableaux de cellules, ou des structs, qui contiennent d'autres tableaux, mais vous ne pouvez pas avoir juste un tuple de tableaux assignés à une seule variable (ce que vous avez dans mdict = {'exon': (exon [0], exon 1)) - il n'y a pas de concept de tuple dans Matlab.

Vous devrez également faire vos objets numpy tableaux:

import numpy as np 
exon = [ np.array([[1, 2], [3, 4], [5, 6]]), np.array([[7, 8], [9, 10]]) ] 

Il y a la documentation scipy here avec des détails sur la façon d'enregistrer différents types Matlab, mais en supposant que vous voulez réseau de cellules:

obj_arr = np.zeros((2,), dtype=np.object) 
obj_arr[0] = exon[0] 
obj_arr[1] = exon[1] 
scipy.io.savemat('/tmp/out.mat', mdict={'exon': obj_arr}) 

cela se traduira par le suivant à matlab:

code result in matlab

ou peut-être (non testé):

obj_arr = np.array(exon, dtype=np.object) 
Questions connexes