создание файла .mat из python - PullRequest
4 голосов
/ 06 октября 2009

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

>>

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

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

Будет здорово, если кто-нибудь предложит то же самое. заранее спасибо Випин Т С

Ответы [ 2 ]

8 голосов
/ 29 октября 2009

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

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

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

Здесь есть документация scipy здесь с подробной информацией о том, как сохранять различные типы 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})

это приведет к следующему в Matlab:

code result in matlab

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

obj_arr = np.array(exon, dtype=np.object)
1 голос
/ 06 октября 2009

Sage - математическое программное обеспечение с открытым исходным кодом, целью которого является объединение синтаксиса python и интерпретатора python с другими инструментами, такими как Matlab, Octave, Mathematica и т. Д.

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

...