Pergunta

Estou tentando exportar uma lista de seqüências de texto do Python para o MATLAB usando o scipy.io. Eu gostaria de usar o scipy.io porque meu arquivo .mat desejado deve incluir ambas as matrizes numéricas (que eu aprendi a fazer aqui) e matrizes de células de texto.

Eu tentei:

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

No MATLAB, carrego o teste.mat e recebo uma matriz de caracteres:

my_list =

adg
beh
cfi

Como faço para fazer o Scipy.io exportar uma lista para uma matriz de células MATLAB?

Foi útil?

Solução

Você precisa fazer do My_list uma variedade 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})

Em seguida, será salvo em um formato celular. Pode haver uma maneira melhor de colocá -lo em um NP.Object, mas eu peguei esse caminho do Documentação Scipy.

Outras dicas

Parece que o conteúdo da lista é exportado corretamente, eles são apenas transpostos e colocados em uma matriz de caracteres. Você pode convertê -lo facilmente para a matriz celular desejada de cordas no Matlab, transpondo e usando Cellstr, que coloca cada linha em uma célula 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'

É verdade que isso não aborda mais em geral questão de exportar dados como uma matriz de células de Python para Matlab, mas deve ajudar com o específico Problema que você liste acima.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top