Calling Python function with multiple outputs in Simulink
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Hello everyone,
I'm trying to call a function from a python script with matlab function block in simulink.
The problem is that the python function returns two variables and I can't read these variables in simulink.
Python function :
def test(x, y):
dr_x = x + x*y
dr_y = y + x/y
return dr_x, dr_y
And I call this function with a matlab function block in simulink:
function [dr_x, dr_y] = testQuest(x, y) % Matlab function block code
coder.extrinsic("pyversion")
coder.extrinsic("py.list")
coder.extrinsic("py.tuple")
pyversion;
dr = py.tuple({0,0}); % intialisation
dr_x = 0; % intialisation
dr_y = 0; % intialisation
coder.extrinsic('py.testQ.test')
dr = py.testQ.test(x,y);
dr_c = cell(dr);
dr_x = dr_c(1);
dr_y = dr_c(2);
When I run it, I receive an error saying: MATLAB expression 'py.testQ.test' is not numeric.
I tried different ways such as:
[dr_x, dr_y] = py.testQ.test(x,y);
instead of:
dr = py.testQ.test(x,y);
But all gives me different errors about the type of the output.
I wonder if it's possible to get multiple outputs from the python function in simulink.
Thank you !
0 comentarios
Respuestas (1)
Yongjian Feng
el 9 de Jul. de 2021
Editada: Yongjian Feng
el 9 de Jul. de 2021
Which version of matlab and python are you using?
I tested 2021a, and calling py.testQ.test(x, y) returns a Python tuple.
ret = py.testQ.test(x, y);
ret{1}
ret{2}
Ver también
Categorías
Más información sobre Call Python from MATLAB en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!