Как запустить функцию пользовательского ввода MATLAB в Python - PullRequest
0 голосов
/ 02 октября 2019

Основываясь на примере, приведенном в документации , мы можем вызвать файл MATLAB triarea.m из скрипта Python следующим образом:

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

Что если у нас есть переменнаяв Python с именем файла MATLAB, введенным пользователем, file_name = 'triarea' затем

eng.file_name(nargout=0)

возвращает ошибку

MatlabExecutionError: Неопределенная функция 'file_name' для входных аргументов типа 'double '.

Как мы можем запустить функцию пользовательского ввода MATLAB в Python?

В моей реальной задаче имя_файла вводится при создании экземпляра объекта класса и сохраняется какатрибут объекта. Затем один из методов объекта вызывает этот файл MATLAB.

Ответы [ 2 ]

2 голосов
/ 02 октября 2019

Вы можете использовать встроенную функцию gettatr как здесь :

import matlab.engine
eng = matlab.engine.start_matlab()

file_name = 'triarea'
dynamic_func = getattr(eng, file_name)
dynamic_func(nargout=0)
1 голос
/ 02 октября 2019

Вы можете объединить строки Python f и eval.

Пример, который использует имя функции, в данном случае plot напрямую:

eng.plot(eng.magic(4))

Пример, которыйоценивает имя переменной как имя функции:

file_name = 'plot'
eval(f'eng.{file_name}(eng.magic(4))')
...