Python a MATLAB: exportando lista de cadenas usando scipy.io

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

Lo intenté:

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

En MATLAB, cargo test.mat y obtengo una matriz de caracteres:

 my_list = adg beh cfi 

¿Cómo hago que scipy.io exporte una lista a una matriz de celdas MATLAB?

Debe hacer que my_list sea 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}) 

Luego se guardará en un formato de celda. Puede haber una mejor manera de ponerlo en un objeto np.object, pero tomé esta forma de la documentación Scipy .

Parece que los contenidos de la lista se exportan correctamente, solo se transponen y se colocan en una matriz de caracteres. Puede convertirlo fácilmente a la matriz de cadenas de cadenas deseada en MATLAB al transponerlo y usar CELLSTR , que coloca cada fila en 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 aborda el problema más general de la exportación de datos como una matriz de celdas desde Python a MATLAB, pero debería ayudar con el problema específico que mencionó anteriormente.