将值从 matlab 返回到 python(作为字典?)
returning values from matlab to python (as a dictionary?)
我正在为 python 使用 matlab 引擎。我的目标是从 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)
不幸的是,这不是 return 我的字典,而是 matlab.object 我不知道该怎么办。是否可以 return 我的字典,或者我应该简单地 return 来自 matlab 的数字并在 python 中制作我的字典?
您可以执行 dir (resultdir) 以了解可用的方法。
我是从 the mathworks website 算出来的。只需为脚本的 return 值创建一个 matlab 结构,python 就会将其视为字典。所以我的 matlab 代码现在是:
function out = mymatlabfunc(x,y)
# compute stuff
out = struct('interesting variable 1', x_out, 'interesting variable 2', y_out, ...);
我正在为 python 使用 matlab 引擎。我的目标是从 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)
不幸的是,这不是 return 我的字典,而是 matlab.object 我不知道该怎么办。是否可以 return 我的字典,或者我应该简单地 return 来自 matlab 的数字并在 python 中制作我的字典?
您可以执行 dir (resultdir) 以了解可用的方法。
我是从 the mathworks website 算出来的。只需为脚本的 return 值创建一个 matlab 结构,python 就会将其视为字典。所以我的 matlab 代码现在是:
function out = mymatlabfunc(x,y)
# compute stuff
out = struct('interesting variable 1', x_out, 'interesting variable 2', y_out, ...);