Attempt to extract field 'addgivenNumbers' from 'mxArray'.

Hi, I am facing an error when i am trying to call python function in simulink.
how to fix this error? and thank you
heres the python code saved as 'add.py' :
def addgivenNumbers( num1, num2):
sum = num1 + num2 + 20
return sum
Simulink Matlab function code:
function a = fcn(num1, num2)
a = 0;
coder.extrinsic('py.importlib.import_module');
coder.extrinsic('py.importlib.reload');
mod = py.importlib.import_module('add');
a = mod.addgivenNumbers(num1, num2);
end

Answers (1)

Hi Rifshu,
I understand you’re running into an error while calling a user-defined Python function from inside a MATLAB Function block.
In your code, the variable 'mod', which stores the value returned by the Python function 'import_module', is an mxArray. Attempting to call a function in the module using the dot operator generates an error, as this operation is not supported with mxArrays.
This can be avoided by directly calling the 'addgivenNumbers' function, after declaring it as extrinsic:
coder.extrinsic('py.add.addgivenNumbers');
a = py.add.addgivenNumbers(num1,num2);
You should not encounter any errors now.
Hope this helps!
-Shivang

Products

Release

R2021b

Asked:

on 18 Feb 2022

Edited:

on 9 Dec 2024

Community Treasure Hunt

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

Start Hunting!