Attempt to extract field 'addgivenNumbers' from 'mxArray'.
7 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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
0 Commenti
Risposte (1)
Shivang
il 29 Set 2023
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.
Refer to the documentation for more details: https://www.mathworks.com/help/simulink/ug/python_simulink_example.html#:~:text=coder.extrinsic(%27py.sorted%27)%3B%0A%20%20%20%20ytmp%20%3D%20py.sorted(u)%3B
Hope this helps!
-Shivang
0 Commenti
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!