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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top