Pregunta

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 debe incluir ambas matrices numéricas (que aprendí a hacer aquí) y matrices de celdas de texto.

Lo intenté:

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

En MATLAB, Cargue Test.mat y obtengo una matriz de personajes:

my_list =

adg
beh
cfi

¿Cómo hago que Scipy.io exporta una lista en una matriz de celdas MATLAB?

¿Fue útil?

Solución

Necesitas hacer de 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 mejor manera de ponerlo en un NP.Object, pero tomé de esta manera desde el Documentación escolar.

Otros consejos

Parece que el contenido de la lista se exporta correctamente, solo se transponen y se colocan en una matriz de personajes. Puede convertirlo fácilmente en la matriz de cadenas de células deseadas en MATLAB mediante la transposición y usando Cellstrinc, 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'

De acuerdo, esto no aborda cuanto más general El problema de exportar datos como una matriz de celdas de Python a Matlab, pero debería ayudar con el específico Problema que enumera arriba.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top