# 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. 