Error - MATLAB expression <output of myfunc> is not numeric

I am trying to pass a value from the python code to the Matlab function in simulink and I am getting the following error:
Error - MATLAB expression <output of myfunc> is not numeric.
Matlab function -
function y = fcn
y = 0;
coder.extrinsic('py.throttle.test')
y = py.throttle.test();
end
Python code(throttle.py)
def test():
throttle = 5
return throttle
any idea how this could be solved?

7 Comments

What is showing up for class(y) after the execution of the py.throttle.test() call ?
I am not clear on which point is giving the error?
Try
y = uint64(0);
If you call from the Command Window
y = fcn
Would y be Python list variable type? You'll need to convert it to numeric array, check here.
No, from the command window, y comes out as uint64 .
y = py.throttle.test(); this the point, I am getting a error as Output of y is non numeric
Which MATLAB release are you using, and which operating system?
I am using MATLAB R2020b and Windows 10
filename = 'throttle.py';
[fid, msg] = fopen(filename, 'wt');
if fid < 0
error('Failed to open file "%s" because "%s"', filename, msg);
end
fprintf(fid, 'def test():\n');
fprintf(fid, ' throttle = 5\n');
fprintf(fid, ' return throttle\n');
fclose(fid)
ans = 0
y = py.throttle.test();
class(y)
ans = 'int64'
disp(y)
5
It works when I test on Mac or in MATLAB Online (which is Linux)

Sign in to comment.

Answers (0)

Asked:

on 15 Feb 2021

Commented:

on 15 Feb 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!