Main Content

Call User Scripts and Functions from Python

This example shows how to call a MATLAB® script to compute the area of a triangle from Python®.

To call a MATLAB script or function, put it on your MATLAB path. For other options, see Put Function on Python Path.

For this example, create a MATLAB script in a file named triarea.m in your current folder.

b = 5;
h = 3;
a = 0.5*(b.* h)

After you save the file, start Python and call the script.

import matlab.engine
eng = matlab.engine.start_matlab()
eng.triarea(nargout=0)
a =

    7.5000

Specify nargout=0. Although the script prints output, it returns no output arguments to Python.

Convert the script to a function and call the function from the engine. To edit the file, open the MATLAB Editor.

eng.edit('triarea',nargout=0)

Delete the three statements. Then add a function declaration and save the file.

function a = triarea(b,h)
a = 0.5*(b.* h);

Call the new triarea function from the engine.

ret = eng.triarea(1.0,5.0)
print(ret)
2.5

The triarea function returns only one output argument, so there is no need to specify nargout.

Put Function on Python Path

If the MATLAB function is not on the MATLAB path, you can call it from the current folder. For example, to call MATLAB function myFnc in folder myFolder, type:

import matlab.engine
eng = matlab.engine.start_matlab()
eng.cd(r'myFolder', nargout=0)
eng.myFnc()

If myFnc is in folder C:/work/myfiles, you can add this folder to the Python path.

eng.addpath("C:/work/myfiles")

To add a path to all subfolders, type:

s = eng.genpath('C:/work/myfiles')
eng.addpath(s, nargout=0)

See Also

|

Related Topics