我从Python调用了Matlab函数,该函数有3个输出。 Python提供ValueError: not enough values to unpack (expected 3, got 2)
。这是Matlab函数testCalledByPython
:
function [otpt1, otpt2, otpt3] = testCalledByPython(inpt)
otpt1 = rand(inpt, inpt);
otpt2 = magic(inpt);
otpt3 = zeros(inpt, inpt);
这是调用上述函数的Python脚本:
#!/usr/bin/env python3
import matlab.engine
eng = matlab.engine.start_matlab()
otpt1, otpt2, otpt3 = eng.testCalledByPython(2)
如果我用otpt1, otpt2 = eng.testCalledByPython(2)
替换最后一行,它将运行,但是输出为:
otpt1, otpt2
Out[5]:
(matlab.double([0.8147236863931789,0.12698681629350606]),
matlab.double([0.9057919370756192,0.9133758561390194]))
显然,这些是错误的输出。我该怎么解决?
答案 0 :(得分:0)
我自己找到了解决方案。 Matlab文档中对此进行了解释: https://uk.mathworks.com/help/matlab/matlab_external/call-matlab-functions-from-python.html
因此,知道有3个输出,完成此操作的方法是将Python脚本的最后一行更改为:
otpt1, otpt2, otpt3 = eng.testCalledByPython(2, nargout = 3)