Вызов функции Matlab из скрипта Python: «недостаточно значений для распаковки» ValueError - PullRequest
0 голосов
/ 30 октября 2018

Я вызвал функцию Matlab из Python, функция имеет 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]))

Очевидно, что это неправильные результаты. Как я могу решить это?

1 Ответ

0 голосов
/ 30 октября 2018

Я нашел решение сам. Это на самом деле объясняется в документации 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...