exponenta event banner

Подключение Python к работающему сеансу MATLAB

Модуль MATLAB ® Engine for Python ® можно подключить к общему сеансу MATLAB, который уже выполняется на локальном компьютере. Можно также подключаться к нескольким общим сеансам MATLAB из одного сеанса Python. Сеанс MATLAB можно совместно использовать в любое время во время сеанса или при запуске с помощью опции запуска.

Подключиться к общему сеансу MATLAB

Сначала преобразуйте сеанс MATLAB в общий сеанс. От вызова MATLAB matlab.engine.shareEngine.

matlab.engine.shareEngine

Запустите Python по запросу операционной системы. Для подключения к общему сеансу MATLAB вызовите matlab.engine.connect_matlab от Питона. Из Python можно вызвать любую функцию MATLAB.

import matlab.engine
eng = matlab.engine.connect_matlab()
eng.sqrt(4.0)
2.0

К общему сеансу можно подключиться по имени. Чтобы найти имя общего сеанса, вызовите matlab.engine.find_matlab от Питона.

matlab.engine.find_matlab()
('MATLAB_13232',)

matlab.engine.find_matlab возвращает tuple с именами всех общих сеансов MATLAB на локальном компьютере. В этом примере matlab.engine.shareEngine присвоил общему сеансу имя по умолчанию MATLAB_13232где 13232 - идентификатор процесса MATLAB. Операционная система присваивает сеансу MATLAB другой идентификатор процесса при каждом запуске MATLAB.

Подключитесь к сеансу MATLAB по имени.

eng.quit()
newEngine = matlab.engine.connect_matlab('MATLAB_13232')

Если имя общего сеанса не указано, matlab.engine.connect_matlab подключается к первому сеансу с именем tuple возвращено matlab.engine.find_matlab.

Асинхронное подключение к общему сеансу MATLAB

Из MATLAB преобразуйте сеанс MATLAB в общий сеанс.

matlab.engine.shareEngine

Запустите Python по запросу операционной системы. Асинхронное подключение к общему сеансу MATLAB.

import matlab.engine
future = matlab.engine.connect_matlab(background=True)
eng = future.result()

Вызовите функцию MATLAB из Python.

eng.sqrt(4.0)
2.0

Подключение к нескольким общим сеансам MATLAB

Из Python можно подключаться к нескольким общим сеансам MATLAB.

Запустите второй сеанс MATLAB. От вызова MATLAB matlab.engine.shareEngine. Присвойте имя второму общему сеансу. Имя должно быть допустимым именем переменной MATLAB. Сведения о допустимых именах переменных см. в разделе Имена переменных.

matlab.engine.shareEngine('MATLABEngine2')

В Python найдите все общие сеансы MATLAB.

import matlab.engine
matlab.engine.find_matlab()
('MATLAB_13232','MATLABEngine2')

Для подключения к общим сеансам MATLAB вызовите matlab.engine.connect_matlab от Питона.

eng1 = matlab.engine.connect_matlab('MATLAB_13232')
eng2 = matlab.engine.connect_matlab('MATLABEngine2')

Запуск общих сеансов MATLAB с параметрами запуска

По умолчанию сеансы MATLAB не являются общими. Однако можно запустить MATLAB как общий сеанс с опцией запуска.

Запуск общих сеансов MATLAB по запросу операционной системы.

matlab -r "matlab.engine.shareEngine"
matlab -r "matlab.engine.shareEngine('MATLABEngine3')"

Можно запустить сеанс с именем по умолчанию или задать имя, заключенное в одинарные кавычки.

См. также

| | | |

Связанные темы