利用matlab引擎将python嵌套列表转换为matlab单元



我正在尝试将python嵌套列表转换为python中的matlab单元格。我的python嵌套列表只包含字符串。

这是我的清单:

x = [['a', 'b'],['d','e']]                                                                                                 
type(x)                                                                                                                    
list

这是我试图将其作为matlab单元传递的:

import matlab.engine 
import matlab 
eng = matlab.engine.start_matlab() 
y = eng.cell(x)                                                                                                            
type(y)                                                                                                                    
list

这种方法失败,因为y的类型仍然是一个列表。

另一次出现错误的尝试:

y = eng.cellstr(x)
Error using cellstr (line 44)
Element 1 is not a string scalar or character array. All elements of cell input must be 
string scalars or character arrays.

如有任何建议,我们将不胜感激,提前表示感谢!

这种方法失败了,因为y的类型仍然是列表

这正是Python中的单元表示,但实际上这是MATLAB中的单元。您可以通过运行cell2mat:等特定于细胞的操作来确认这一点

>>> import matlab.engine 
>>> import matlab
>>> eng = matlab.engine.start_matlab()     
>>> x = [['a', 'b'],['d','e']]
>>> matlab_cell = eng.cell(x)
>>> eng.cell2mat(matlab_cell[0])
'ab'

因此matlab_cell是MATLAB的一个单元:

>>> eng.iscell(matlab_cell)
True

但它在Python中显示为一个列表:

>>> type(matlab_cell)
<class 'list'>

您可以在此处找到有关引擎执行的隐式转换的更多信息。

最新更新