Calling Python function with multiple outputs in Simulink
조회 수: 2 (최근 30일)
이전 댓글 표시
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
답변 (1개)
Yongjian Feng
2021년 7월 9일
편집: Yongjian Feng
2021년 7월 9일
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}
참고 항목
카테고리
Help Center 및 File Exchange에서 Call Python from MATLAB에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!