pythonpython-3.xmatlabmatlab-compiler

How to run a user input MATLAB function in Python


Based on the example given in the documentation, we can call a MATLAB file triarea.m from a python script as follows:

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

What if, we had a variable in Python with the MATLAB filename input by the user, file_name = 'triarea' then,

eng.file_name(nargout=0)

returns the error

MatlabExecutionError: Undefined function 'file_name' for input arguments of type 'double'.

How can we run the user input MATLAB function in Python?

In my actual problem, the file_name is input while instantiating an object of a class and is stored as an object attribute. Then one of the methods of the object calls this MATLAB file.


Solution

  • You can use the builtin function gettatr like here:

    import matlab.engine
    eng = matlab.engine.start_matlab()
    
    file_name = 'triarea'
    dynamic_func = getattr(eng, file_name)
    dynamic_func(nargout=0)