从matlab返回值到python(作为字典?)

时间:2015-06-21 04:05:15

标签: python matlab matlab-engine

我正在使用matlab引擎进行python。我的目标是从python将一些信息传递给我的matlab脚本,然后存储结果。如果我创建了一个包含我想要的所有值的matlab数组,我就能做到这一点,但我真的很喜欢一个字典(所以我记得什么值与变量有什么关系,或者我将来如何更改我的matlab脚本)。这就是我尝试过的:

MATLAB函数:

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

并在python中:

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

不幸的是,这不会返回我的字典,而是一个matlab.object,我不知道该怎么做。是否可以返回我的字典,或者我应该从matlab返回数字并在python中创建我的字典?

2 个答案:

答案 0 :(得分:0)

您可以执行dir(resultdir)以了解可用的方法。

答案 1 :(得分: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, ...);