我正在尝试使用scipy.io将文本字符串列表从Python导出到MATLAB。我想使用scipy.io,因为我想要的.mat文件应该包括数值矩阵(我学会了做here)和文本单元格数组。
我试过了:
import scipy.io
my_list = ['abc', 'def', 'ghi']
scipy.io.savemat('test.mat', mdict={'my_list': my_list})
在MATLAB中,我加载test.mat并得到一个字符数组:
my_list =
adg
beh
cfi
如何让scipy.io将列表导出到MATLAB单元格数组中?
答案 0 :(得分:12)
你需要让my_list成为一个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})
然后它将以单元格格式保存。可能有更好的方法将它放入np.object,但我从Scipy documentation采取了这种方式。
答案 1 :(得分:1)
看起来列表的内容正确导出,它们只是转置并放置在字符数组中。您可以通过转置它并使用CELLSTR将每行放在一个单独的单元格中,轻松地将它转换为MATLAB中所需的字符串数组:
>> 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'
当然,这并没有解决将数据作为单元格数组从Python导出到MATLAB的更多一般问题,但它应该有助于解决您列出的特定问题上方。