I built a neural network controller in python, and want to control a simulink model using the python function. The input and output of my python function are 'numpy.array'. The output shape is [4, 1]. I used a 'matlab function' to call the python function in simulink. The code of the matlab function is as follows:
function [u1, u2, u3, u4] = fcn(data_in)
coder.extrinsic('py.controller.multi_output')
out = 0;
out = py.controller.multi_output(data_in);
u1 = out(1);
u2 = out(2);
u3 = out(3);
u5 = out(4);
The 'py.controller.multi_output(data_in)' works well in matlab and returns ndarray:
out = py.controller.multi_output(data_in)
out =
Python ndarray:
1
2
3
4
I can transform the ndarray to double. But it does not work in simulink:
An error occurred while running the simulation and the simulation was terminated
Caused by:
MATLAB expression '<output of py.controller.multi_output>' is not numeric.
Does anyone tell me how to fix it?