2010-03-12 23 views
12

Estoy tratando de exportar una lista de cadenas de texto de Python a MATLAB usando scipy.io. Me gustaría utilizar scipy.io porque mi archivo .mat deseado debería incluir tanto matrices numéricas (que aprendí a hacer here) como matrices de celdas de texto.Python a MATLAB: exportar la lista de cadenas usando scipy.io

me trataron:

import scipy.io 
my_list = ['abc', 'def', 'ghi'] 
scipy.io.savemat('test.mat', mdict={'my_list': my_list}) 

En MATLAB, me carga test.mat y obtener una matriz de caracteres:

my_list = 

adg 
beh 
cfi 

¿Cómo puedo hacer scipy.io exportar una lista en una serie de células de MATLAB ?

+2

También podría estar interesado en mi proyecto python-in-MATLAB: http://github.com/kw/pymex – kwatford

Respuesta

12

Necesitas hacer my_list una matriz de objetos numpy:

import scipy.io 
import numpy as np 
my_list = np.zeros((3,), dtype=np.object) 
my_list[:] = ['abc', 'def', 'ghi'] 
scipy.io.savemat('test.mat', mdict={'my_list': my_list}) 

Entonces se guardará en un formato de celda. Puede haber una forma mejor de ponerlo en un np.object, pero lo tomé del Scipy documentation.

+0

Eso funciona, ¡gracias! – williampli

+0

Para la posteridad: una forma más fácil de hacer una matriz de objetos es 'np.asarray (['abc', 'def', 'ghi'], dtype = 'object')'. – Dougal

1

Parece que los contenidos de la lista se exportan correctamente, simplemente se transportan y se colocan en una matriz de caracteres. Usted puede convertir fácilmente a la matriz celular deseada de cadenas en MATLAB mediante la transposición y utilizando CELLSTR, lo que coloca cada fila de una celda separada:

>> my_list = ['adg';'beh';'cfi']; %# Your example 
>> my_list = cellstr(my_list') %'# A 3-by-1 cell array of strings 

my_list = 

    'abc' 
    'def' 
    'ghi' 

Por supuesto, esto no se aborda la cuestión general más de exportar datos como una matriz de celdas desde Python a MATLAB, pero debería ayudar con el problema específico que lista arriba.

+0

Esto también es útil, ¡gracias! – williampli

Cuestiones relacionadas