Python per MATLAB: lista esportazione di stringhe utilizzando scipy.io
Domanda
Sto cercando di esportare un elenco di stringhe di testo da Python a MATLAB utilizzando scipy.io. Vorrei utilizzare scipy.io perché il mio file .mat desiderato dovrebbe includere sia le matrici numeriche (che ho imparato a fare qui ) e array di celle di testo.
ho provato:
import scipy.io
my_list = ['abc', 'def', 'ghi']
scipy.io.savemat('test.mat', mdict={'my_list': my_list})
In MATLAB, mi carico test.mat e ottenere un array di caratteri:
my_list =
adg
beh
cfi
Come faccio a creare scipy.io esportare un elenco in un array di celle MATLAB?
Soluzione
È necessario my_list un array di oggetti 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})
Poi verrà salvato in un formato di cella. Ci potrebbe essere un modo migliore di mettere in una np.object, ma ho preso questa strada dal SciPy documentazione .
Altri suggerimenti
Sembra che i contenuti della lista vengono esportati correttamente, sono solo recepite e posti in un array di caratteri. Si può facilmente convertirlo alla matrice di celle desiderato di stringhe in MATLAB trasponendo e utilizzando CELLSTR , che pone ciascuna riga in una cella separata:
>> 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'
Certo, questo non affronta il più Generale problema di esportare i dati come array di celle da Python a MATLAB, ma dovrebbe aiutare con il specifico problema si elenco sopra.