Пакет: com.mathworks.engine
Использование класса Java MATLAB как вычислительный механизм
Класс com.mathworks.engine.MatlabEngine
использует процесс MATLAB® в качестве вычислительного механизма для Java®. Этот класс обеспечивает интерфейс между языком Java и MATLAB, позволяя вам оценить функции MATLAB и выражения из Java.
Класс MatlabEngine
обеспечивает статические методы запустить MATLAB и соединиться с разделяемым сеансом работы с MATLAB синхронно или асинхронно. Только эти статические методы могут инстанцировать этого класса:
Запустите MATLAB синхронно — startMatlab
Соединитесь с разделяемым сеансом работы с MATLAB синхронно — connectMatlab
Запустите MATLAB асинхронно — startMatlabAsync
Соединитесь с разделяемым сеансом работы с MATLAB асинхронно — connectMatlabAsync
Механизм не поддерживает эти опции запуска MATLAB:
-h
-help
-?
-n
-e
-softwareopengl
-logfile
Для получения информации об опциях запуска MATLAB смотрите Обычно Используемые опции запуска.
Запуск MATLAB синхронно. | |
Запуск MATLAB асинхронно. | |
Найдите все доступные разделяемые сеансы работы с MATLAB от локальной машины синхронно. | |
Найдите все доступные разделяемые сеансы работы с MATLAB от локальной машины асинхронно. | |
Соединитесь с разделяемым сеансом работы с MATLAB на локальной машине синхронно. | |
Соединитесь с разделяемым сеансом работы с MATLAB на локальной машине асинхронно. |
NULL_WRITER | Используйте средство записи, которое игнорирует содержимое из окна команды MATLAB. |
Оцените функцию MATLAB с аргументами синхронно. | |
Оцените функцию MATLAB с аргументами асинхронно. | |
Выполните выражение MATLAB как строку синхронно. | |
Выполните выражение MATLAB как строку асинхронно. | |
Получите переменную из базового рабочего пространства MATLAB синхронно. | |
Получите переменную из базового рабочего пространства MATLAB асинхронно. | |
Поместите переменную в базовое рабочее пространство MATLAB синхронно. | |
Поместите переменную в базовое рабочее пространство MATLAB асинхронно. | |
Отключитесь от текущего сеанса работы с MATLAB синхронно. | |
Отключитесь от текущего сеанса работы с MATLAB асинхронно. | |
Обеспечьте завершение работы текущего сеанса работы с MATLAB синхронно. | |
Обеспечьте завершение работы текущего сеанса работы с MATLAB асинхронно. | |
Отключите или отключите текущий сеанс работы с MATLAB. |
startMatlab
static MatlabEngine startMatlab(String[] options)
static MatlabEngine startMatlab()
Запуск MATLAB синхронно.
| Опции запуска раньше запускали движок MATLAB. Для опций см. Запуск и завершение работы. |
Экземпляр MatlabEngine
| MATLAB не удается запуститься. |
MatlabEngine engine = MatlabEngine.startMatlab();
startMatlabAsync
static Future<MatlabEngine> startMatlabAsync(String[] options)
static Future<MatlabEngine> startMatlabAsync()
Запуск MATLAB асинхронно. Если MATLAB запустил, затем отменяет, нет.
| Опции запуска раньше запускали MATLAB. Для опций см. Запуск и завершение работы. |
Экземпляр Future<MatlabEngine>
Future<MatlabEngine> future = MatlabEngine.startMatlabAsync();
findMatlab
static String[] findMatlab()
Найдите все разделяемые сеансы работы с MATLAB на локальной машине синхронно.
Массив имен всех разделяемых сеансов работы с MATLAB на локальной машине или пустой вектор, при отсутствии разделяемых сеансов работы с MATLAB, доступных на локальной машине.
| Если существует отказ во время поиска сеансов работы с MATLAB. |
String[] engines = MatlabEngine.findMatlab();
findMatlabAsync
static Future<String[]> findMatlabAsync()
Найдите все разделяемые сеансы работы с MATLAB на локальной машине асинхронно.
Экземпляр Future<String[]>
Future<String[]> future = MatlabEngine.findMatlabAsync();
connectMatlab
static MatlabEngine connectMatlab(String name)
static MatlabEngine connectMatlab()
Соединитесь с разделяемым сеансом работы с MATLAB на локальной машине синхронно.
Если вы задаете имя разделяемого сеанса работы с MATLAB, но механизм не может найти сеанс с тем именем, механизм выдает исключение.
Если вы не задаете имя и нет никакого разделяемого доступного сеанса работы с MATLAB, механизм запускает новый разделяемый сеанс работы с MATLAB с опциями по умолчанию.
Если вы не задаете имя и существуют совместно использованные доступные сеансы работы с MATLAB, подключения механизма к первому доступному сеансу.
| Имя разделяемого сеанса работы с MATLAB. Используйте findMatlab, чтобы получить имена разделяемых сеансов работы с MATLAB. |
Экземпляр MatlabEngine
| MATLAB не удается запуститься или соединиться. |
MatlabEngine engine = MatlabEngine.connectMatlab();
connectMatlabAsync
static Future<MatlabEngine> connectMatlabAsync(String name)
static Future<MatlabEngine> connectMatlabAsync
Соединитесь с разделяемым сеансом работы с MATLAB на локальной машине асинхронно. Поведение эквивалентно, тот из connectMatlab
кроме механизма является асинхронным. Если связь была установлена с MATLAB, затем отменяет, нет.
| Имя разделяемого сеанса работы с MATLAB. |
Экземпляр Future<MatlabEngine>
Future<MatlabEngine> future = MatlabEngine.connectMatlabAsync();
feval
<T> T feval(int nlhs, String func, Writer output, Writer error, Object… args)
<T> T feval(int nlhs, String func, Object… args)
<T> T feval(String func, Writer output, Writer error, Object… args)
<T> T feval(String func, Object… args)
Оцените функции MATLAB с входными параметрами синхронно.
| Имя функции MATLAB или скрипта, чтобы оценить. |
| Количество ожидаемых выходных параметров. Значение по умолчанию равняется 1. Если Если Если |
| Поток раньше хранил стандартный вывод от функции MATLAB. Если вы не задаете средство записи, вывод записан в командное окно или терминал. Используйте |
| Поток раньше хранил стандартную погрешность от функции MATLAB. Если вы не задаете средство записи, вывод записан в командное окно или терминал. Используйте |
| Аргументы, чтобы передать функции MATLAB. |
Результат выполнения функции MATLAB
| Оценка функции MATLAB была отменена. |
| Оценка функции MATLAB была прервана. |
| Сеанс работы с MATLAB не доступен. |
| В функции существует ошибка периода выполнения MATLAB. |
| Существует неподдерживаемый тип данных. |
| В функции MATLAB существует синтаксическая ошибка. |
double result = engine.feval("sqrt", 4);
fevalAsync
<T> Future<T> fevalAsync(int nlhs, String func, Writer output, Writer error, Object… args)
<T> Future<T> fevalAsync(int nlhs, String func, Object… args)
<T> Future<T> fevalAsync(String func, Writer output, Writer error, Object… args)
<T> Future<T> fevalAsync(String func, Object… args)
Оцените функции MATLAB с входными параметрами асинхронно.
| Имя функции MATLAB или скрипта, чтобы оценить. |
| Количество ожидаемых выходных параметров. Значением по умолчанию является Если Если Если |
| Поток раньше хранил стандартный вывод от функции MATLAB. Если вы не задаете средство записи, вывод записан в командное окно или терминал. Используйте |
| Поток раньше хранил стандартную погрешность от функции MATLAB. Если вы не задаете средство записи, вывод записан в командное окно или терминал. Используйте |
| Аргументы, чтобы передать функции MATLAB. |
Экземпляр Future<T>
| Сеанс работы с MATLAB не доступен. |
Future<Double> future = engine.fevalAsync("sqrt", 4);
eval
void eval(String command, Writer output, Writer error)
void eval(String command)
Оцените выражение MATLAB как строку синхронно.
| Выражение MATLAB, чтобы оценить. |
| Поток раньше хранил стандартный вывод от выражения MATLAB. Если вы не задаете средство записи, вывод записан в командное окно или терминал. Используйте |
| Поток раньше хранил стандартную погрешность от выражения MATLAB. Если вы не задаете средство записи, вывод записан в командное окно или терминал. Используйте |
| Оценка функции MATLAB была отменена. |
| Оценка функции MATLAB была прервана. |
| Сеанс работы с MATLAB не доступен. |
| Существует ошибка в выражении MATLAB во время времени выполнения. |
| В выражении MATLAB существует синтаксическая ошибка. |
engine.eval("result = sqrt(4)");
evalAsync
Future<Void> evalAsync(String command, Writer output, Writer error)
Future<Void> evalAsync(String command)
Оцените выражение MATLAB как строку асинхронно.
| Выражение MATLAB, чтобы оценить. |
| Поток раньше хранил стандартный вывод от выражения MATLAB. Если вы не задаете средство записи, вывод записан в командное окно или терминал. Используйте |
| Поток раньше хранил стандартную погрешность от выражения MATLAB. Если вы не задаете средство записи, вывод записан в командное окно или терминал. Используйте |
Экземпляр Future<Void>
| Сеанс работы с MATLAB не доступен. |
Future<Void> future = engine.evalAsync("sqrt(4)");
getVariable
<T> T getVariable(String varName)
Получите переменную из базового рабочего пространства MATLAB.
| Имя переменной в базовом рабочем пространстве MATLAB. |
Переменная передается от базового рабочего пространства MATLAB
| Оценка этой функции отменяется. |
| Оценка этой функции прервана. |
| Сеанс работы с MATLAB не доступен. |
double myVar = engine.getVariable("myVar");
getVariableAsync
<T> Future<T> getVariableAsync(String varName)
Получите переменную из базового рабочего пространства MATLAB асинхронно.
| Имя переменной в базовом рабочем пространстве MATLAB. |
Экземпляр Future<T>
| Сеанс работы с MATLAB не доступен. |
Future<Double> future = engine.getVariableAsync("myVar");
putVariable
void putVariable(String varName, T varData)
Поместите переменную в базовое рабочее пространство MATLAB.
| Имя переменной, чтобы создать в базовом рабочем пространстве MATLAB. |
| Значение переменной, чтобы создать в базовом рабочем пространстве MATLAB. |
| Оценка этой функции отменяется. |
| Оценка этой функции прервана. |
| Сеанс работы с MATLAB не доступен. |
engine.putVariable("myVar", 100);
putVariableAsync
Future<Void> putVariableAsync(String varName, T varData)
Поместите переменную в базовое рабочее пространство MATLAB асинхронно.
| Имя переменной, чтобы создать в базовом рабочем пространстве MATLAB. |
| Значение переменной, чтобы создать в базовом рабочем пространстве MATLAB. |
Экземпляр Future<Void>
| Сеанс работы с MATLAB не доступен. |
Future<Void> future = engine.putVariableAsync("myVar", 100);
disconnect
void disconnect()
Отключитесь от текущего сеанса работы с MATLAB.
| Текущий сеанс работы с MATLAB не может быть отключен. |
engine.disconnect();
disconnectAsync
Future<Void> disconnectAsync()
Отключитесь от текущего сеанса работы с MATLAB.
Future<Void> future = engine.disconnectAsync();
quit
void quit()
Обеспечьте завершение работы текущего сеанса работы с MATLAB.
| Текущий сеанс работы с MATLAB не может быть закрыт. |
engine.quit();
quitAsync
Future<Void> quitAsync()
Обеспечьте завершение работы текущего сеанса работы с MATLAB асинхронно, не ожидая завершения.
Экземпляр Future<Void>
Future<Void> future = engine.quitAsync();
close
void close()
MatlabEngine
предоставляет метод close()
, чтобы реализовать интерфейс java.lang.AutoCloseable
для объектов MatlabEngine
. Этот метод close()
позволяет вам использовать try
- оператор с ресурсами, чтобы автоматически отключить или отключить сеанс работы с MATLAB в конце оператора.
Метод close()
MatlabEngine
отключает или отключает текущий сеанс работы с MATLAB, в зависимости от контекста.
Если процесс Java запускает сеанс работы с MATLAB как неразделяемый сеанс по умолчанию, close()
отключает MATLAB.
Если сеанс работы с MATLAB является сеансом совместной работы, close()
отключает MATLAB от этого процесса Java. MATLAB останавливается, когда нет никаких других связей.
Чтобы обеспечить завершение работы или разъединение текущего сеанса работы с MATLAB, явным образом вызовите MatlabEngine.quit()
, MatlabEngine.disconnect()
или их асинхронные дубликаты.
engine.close();
Этот пример показывает, как оценить функцию MATLAB асинхронно. Рабочий процесс:
Откройте сеанс работы с MATLAB.
Вызовите функцию sqrt
MATLAB с аргументами асинхронно.
Получите результат функции MATLAB.
Закройте движок MATLAB.
import com.mathworks.engine.MatlabEngine Future<MatlabEngine> engFuture = MatlabEngine.startMatlabAsync(); MatlabEngine engine = engFuture.get(); double myVar = 4; Future<Double> future = engine.fevalAsync("sqrt", myVar); double result = future.get(); System.out.println(result);
matlab.engine.engineName
| matlab.engine.isEngineShared
| matlab.engine.shareEngine