Main Content

Call Python Function Using MATLAB Function and MATLAB System Block

This example shows how to call a Python® function in Simulink® that sorts random numbers using a Python® sorting function and two different blocks: the MATLAB Function block and MATLAB System block. For more on using Python in MATLAB®, see Access Python Modules from MATLAB - Getting Started.

MATLAB supports the reference implementation of Python, often called CPython. If you are on a Mac or Linux® platform, you already have Python installed. If you are using Windows®, you need to install a distribution, such as those found at https://www.python.org/downloads/. For more information, see Configure Your System to Use Python.

Use Python Functions in Simulink Model

This model contains a random number generator that outputs a 1x5 double containing numbers from 0 to 1, a MATLAB Function and a MATLAB System block that sorts the numbers, and a manual switch that leads to a Display block.

The MATLAB Function block calls the py.sorted function from Python and outputs a 1x5 double sorted list, as seen below in the code snippet.

function y = fcn(u)
    % Sort values of 'u'
    coder.extrinsic('py.sorted');
    ytmp = py.sorted(u);
end

The MATLAB System block calls the py.sorted function as part of stepImpl and outputs a 1x5 double sorted list as seen below in the code snippet.

function y = stepImpl(~,u)
    % Implement algorithm. Calculate y as a function of input u and
    % discrete states.
    y = py.sorted(u);
    y = cellfun(@double,cell(y));
end

Running this model using the MATLAB Function block or MATLAB System block yields a sorted list of the numbers generated in the random number generator block. An example of this can be seen below.