首页 > 解决方案 > 将所有 MatLab 工作区变量转换为 Python 变量

问题描述

我正在像这样在 Python 上运行 MatLab 脚本(.m)(来自这里的想法):

import matlab.engine

eng = matlab.engine.start_matlab()
eng.testing(nargout=0)
test = eng.workspace['M']
print(type(test))
print(test)

这是有效的,它会打印出这样的东西:

<class 'float'>
252.0

然而,在 MatLab 方面,我在其工作区中有 30 个不同的变量(即 1x1 图形,101x1 复数双精度)。有什么方法可以“自动”将所有 MatLab 变量转换为其各自的 Python 变量?

标签: pythonpython-3.xmatlabmatlab-engine

解决方案


Matlab 中的who命令将返回当前工作空间中所有变量的名称。您可以使用它将变量名称存储到 Matlab 工作区中的变量中。

eng.evalc('C = who;')

这个变量列表可以导入python,

>>> varnames = eng.workspace['C']
>>> varnames
['mvar1', 'mvar2', 'mvar3']

该列表可以在循环中使用,以将它们的相应值存储到字典中。

mvars = {}
for v in varnames:
    mvars[v] = eng.workspace[v]

这个 dict 可以用作mvars['mvarname'].


推荐阅读