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