2015-06-21 92 views
0

我正在使用python的matlab引擎。我的目标是将一些信息从python传递给我的matlab脚本,然后存储结果。我能够做到这一点,如果我创建了我想要的所有值的matlab数组,但我真的很喜欢字典(所以我可以记住什么值与什么变量或如果我将来改变我的matlab脚本)。这是我已经试过:从matlab返回值到python(作为字典?)

MATLAB功能:

function out = mymatlabfunc(x,y) 
    # compute stuff 
    out = py.dict('interesting variable 1', x_out, 'interesting variable 2', y_out, ...); 

和蟒蛇:

eng = matlab.engine.start_matlab() 
xdata, ydata = matlab.double(x), matlab.double(y) 
resultdict = eng.mymatlabfunc(xdata,ydata) 

不幸的是这并没有回我的词典,而是一matlab.object我,我不不知道该怎么办。是否有可能返回我的字典,或者我应该简单地返回matlab中的数字,并在python中创建我的字典?

+0

从m端来看,它只是一个“Python对象”,因为matlab不支持字典。只需调用诸如“get”之类的方法即可获得想要的whantever。 – Daniel

+1

@Daniel我得到一个错误,说matlab.object没有属性'get'。 Python认为这仍然是一个matlab对象,而不是字典。 – qRTPCR

回答

0

我从the mathworks website算出来。简单地为脚本的返回值创建一个matlab结构,python会将其视为字典。所以我的matlab代码现在是:

function out = mymatlabfunc(x,y) 
    # compute stuff 
    out = struct('interesting variable 1', x_out, 'interesting variable 2', y_out, ...); 
0

你可以做一个dir(resultdir)以知道有什么方法可用。

+0

我看到的唯一方法是大小和'__class__'和'__getattribute__'之类的东西。我可以得到它的长度(长度为1),但就Python而言,它是一个matlab对象,所以我不能用它做正常的字典操作。 – qRTPCR