Frage

Ich versuche, eine Liste von Textzeichenfolgen von Python nach Matlab mit scipy.io zu exportieren. Ich möchte scipy.io verwenden, weil meine gewünschte .mat -Datei beide numerischen Matrizen enthalten sollte (was ich gelernt habe hier) und Textzellenarrays.

Ich habe es versucht:

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

In MATLAB lade ich test.mat und bekomme ein Zeichenarray:

my_list =

adg
beh
cfi

Wie mache ich scipy.io eine Liste in ein Matlab -Zellen -Array exportieren?

War es hilfreich?

Lösung

Sie müssen my_list zu einem Array von Numpy -Objekten machen:

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})

Dann wird es in einem Zellformat gespeichert. Es könnte eine bessere Möglichkeit geben, es in ein np.object zu bringen, aber ich habe diesen Weg aus dem genommen Scipy -Dokumentation.

Andere Tipps

Es sieht so aus, als ob der Inhalt der Liste ordnungsgemäß exportiert wird, sie werden nur transponiert und in ein Zeichenarray platziert. Sie können es problemlos in das gewünschte Zellarray von Saiten in Matlab umwandeln, indem Sie es umsetzen und verwenden Zellstr, wobei jede Reihe in eine separate Zelle platziert wird:

>> 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'

Zugegeben, das geht nicht umso mehr an Allgemeines Ausgabe des Exportierens von Daten als Zellarray von Python nach Matlab, aber es sollte mit dem helfen Spezifisch Problem, das Sie oben auflisten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top