2009-10-06 2 views
2

У меня есть переменная exon = [[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10]]]. Я хотел бы создать файл мат как следующийСоздание файла .mat из python

>> 

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

Когда я использовал код питона, чтобы сделать то же самое он показывает сообщение об ошибке. вот мой код 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])}) 

Будет здорово, что любой может дать предложение для этого же. заранее спасибо Vipin TS

+2

что сообщение об ошибке? – fortran

ответ

1

Sage является открытым исходным кодом математике программное обеспечение, которое направлено на связывание вместе синтаксис питона и питона переводчика с другими инструментами, как Matlab, Octave, Mathematica и др ...

Может быть, вы хотят, чтобы взглянуть на него:

6

Кажется, вам нужны две разные массивы, связанные с одним и тем же именем переменной в Matlab. Это невозможно. В MATLAB вы можете иметь массивы ячеек или структуры, которые содержат другие массивы, но у вас не может быть только кортежей массивов, назначенных одной переменной (это то, что вы имеете в mdict = {'exon': (exon [0], exon 1)) - в Matlab нет понятия кортежа.

Вы также должны сделать ваши объекты Numpy массивы:

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

Существует SciPy документация here с подробной информацией о том, как сохранить различные типы Matlab, но если вы хотите массив ячеек:

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}) 

, это приведет к следующему этапу в таблице:

code result in matlab

или, возможно (непроверенные):

obj_arr = np.array(exon, dtype=np.object) 
Смежные вопросы