exponenta event banner

com.mathworks.engine. MatlabEngine

Класс Java, использующий MATLAB в качестве вычислительного механизма

Описание

com.mathworks.engine.MatlabEngine класс использует процесс MATLAB ® в качестве вычислительного механизма для Java ®. Этот класс обеспечивает интерфейс между языком Java и MATLAB, позволяя вычислять функции и выражения MATLAB из Java.

Создание

MatlabEngine класс предоставляет статические методы для запуска MATLAB и для синхронного или асинхронного подключения к общей сессии MATLAB. Только эти статические методы могут создавать экземпляры этого класса:

  • Запустить MATLAB синхронно - startMatlab

  • Синхронное подключение к общему сеансу MATLAB - startMatlab

  • Запустить MATLAB асинхронно - startMatlabAsync

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

Неподдерживаемые параметры запуска

Модуль не поддерживает следующие опции запуска MATLAB:

  • -h

  • -help

  • -?

  • -n

  • -e

  • -softwareopengl

  • -logfile

Дополнительные сведения о параметрах запуска MATLAB см. в разделе Часто используемые параметры запуска.

Сводка по методу

Статические методы

startMatlab

Запустить MATLAB синхронно.

startMatlabAsync

Запустить MATLAB асинхронно.

findMatlab

Синхронный поиск всех доступных общих сеансов MATLAB с локального компьютера.

findMatlabAsync

Поиск всех доступных общих сеансов MATLAB на локальном компьютере асинхронно.

connectMatlab

Синхронное подключение к общему сеансу MATLAB на локальном компьютере.

connectMatlabAsync

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

Переменная-член

NULL_WRITER

Используйте устройство записи, которое игнорирует содержимое окна команды MATLAB.

Функции-члены

feval

Вычислите функцию MATLAB синхронно с аргументами.

fevalAsync

Вычислите функцию MATLAB с аргументами асинхронно.

оценка

Вычислите выражение MATLAB как строку синхронно.

evalAsync

Вычислите выражение MATLAB как строку асинхронно.

getVariable

Синхронное получение переменной из базовой рабочей области MATLAB.

getVariableAsync

Асинхронное получение переменной из базовой рабочей области MATLAB.

putVariable

Поместить переменную в базовую рабочую область MATLAB синхронно.

putVariableAsync

Помещайте переменную в базовую рабочую область MATLAB асинхронно.

разъединить

Синхронное отключение от текущего сеанса MATLAB.

disconnectAsync

Отключитесь от текущего сеанса MATLAB асинхронно.

уйти

Принудительное завершение текущего сеанса MATLAB синхронно.

quitAsync

Принудительное отключение текущего сеанса MATLAB асинхронно.

закрыть

Отключите или завершите текущий сеанс MATLAB.

Сведения о методе

startMatlab

static MatlabEngine startMatlab(String[] options)

static MatlabEngine startMatlab()

Описание

Запустить MATLAB синхронно.

Параметры

String[] options

Параметры запуска, используемые для запуска модуля MATLAB. Можно указать несколько параметров запуска. Модуль поддерживает все опции запуска MATLAB, за исключением опций, перечисленных в разделе Неподдерживаемые опции запуска. Список параметров см. в команде для конкретной платформы. matlab (Windows), matlab (macOS), или matlab (Linux).

Прибыль

Экземпляр MatlabEngine

Броски

com.mathworks.engine.EngineException

Не удается запустить MATLAB.

Пример
String[] options = {"-noFigureWindows", "-r", "cd H:"};
MatlabEngine eng = MatlabEngine.startMatlab(options);

startMatlabAsync

static Future<MatlabEngine> startMatlabAsync(String[] options)

static Future<MatlabEngine> startMatlabAsync()

Описание

Запустить MATLAB асинхронно. После запуска MATLAB отмена является операцией no-op.

Параметры

String[] options

Параметры запуска, используемые для запуска модуля MATLAB. Можно указать несколько параметров запуска. Модуль поддерживает все опции запуска MATLAB, за исключением опций, перечисленных в разделе Неподдерживаемые опции запуска. Список параметров см. в команде для конкретной платформы. matlab (Windows), matlab (macOS), или matlab (Linux).

Прибыль

Экземпляр Future<MatlabEngine>

Пример
Future<MatlabEngine> future = MatlabEngine.startMatlabAsync();

findMatlab

static String[] findMatlab()

Описание

Поиск всех общих сеансов MATLAB на локальном компьютере синхронно.

Прибыль

Массив имен всех общих сессий MATLAB на локальном компьютере или пустой вектор, если на локальном компьютере нет доступных общих сессий MATLAB.

Броски

com.mathworks.engine.EngineException

Если во время поиска сеансов 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, подсистема подключается к первой доступной сессии.

Параметры

String name

Имя общего сеанса MATLAB. Используйте findMatlab для получения имен общих сессий MATLAB.

Прибыль

Экземпляр MatlabEngine

Броски

com.mathworks.engine.EngineException

Не удается запустить или подключить MATLAB.

Пример
MatlabEngine engine = MatlabEngine.connectMatlab();

connectMatlabAsync

static Future<MatlabEngine> connectMatlabAsync(String name)

static Future<MatlabEngine> connectMatlabAsync

Описание

Подключение к общему сеансу MATLAB на локальном компьютере асинхронно. Поведение совпадает с поведением connectMatlab за исключением асинхронного механизма. После установления соединения с MATLAB отмена является операцией no-op.

Параметры

String name

Имя общего сеанса 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 синхронно с входными аргументами.

Параметры

String func

Имя вычисляемой функции или сценария MATLAB.

int nlhs

Количество ожидаемых результатов. Значение по умолчанию - 1.

Если nlhs больше, чем 1, возвращенный тип T должно быть <Object[]>.

Если nlhs является 0, возвращенный тип T должно быть <Void> или <?>.

Если nlhs является 1, возвращенный тип T может быть ожидаемым типом или <Object> если тип неизвестен.

Writer output

Поток, используемый для хранения стандартных выходных данных функции MATLAB. Если модуль записи не указан, выходные данные записываются в командное окно или терминал. Использовать NULL_WRITER для игнорирования выходных данных из окна команд MATLAB.

Writer error

Поток, используемый для сохранения стандартной ошибки из функции MATLAB. Если модуль записи не указан, выходные данные записываются в командное окно или терминал. Использовать NULL_WRITER для игнорирования сообщения об ошибке из окна команд MATLAB.

Object... args

Аргументы для передачи функции MATLAB.

Прибыль

Результат выполнения функции MATLAB

Броски

java.util.concurrent.CancellationException

Оценка функции MATLAB отменена.

java.lang.InterruptedException

Оценка функции MATLAB была прервана.

java.lang.IllegalStateException

Сеанс MATLAB недоступен.

com.mathworks.engine.MatlabExcecutionException

Ошибка выполнения MATLAB в функции.

com.mathworks.engine.UnsupportedTypeExeption

Неподдерживаемый тип данных.

com.mathworks.engine.MatlabSyntaxException

Синтаксическая ошибка в функции 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 с помощью входных аргументов асинхронно.

Параметры

String func

Имя вычисляемой функции или сценария MATLAB.

int nlhs

Количество ожидаемых результатов. По умолчанию: 1.

Если nlhs больше, чем 1, возвращенный тип T должно быть <Object[]>.

Если nlhs является 0, возвращенный тип T должно быть <Void> или <?>.

Если nlhs является 1, возвращенный тип T может быть ожидаемым типом или <Object> если тип неизвестен.

Writer output

Поток, используемый для хранения стандартных выходных данных функции MATLAB. Если модуль записи не указан, выходные данные записываются в командное окно или терминал. Использовать NULL_WRITER для игнорирования выходных данных из окна команд MATLAB.

Writer error

Поток, используемый для сохранения стандартной ошибки из функции MATLAB. Если модуль записи не указан, выходные данные записываются в командное окно или терминал. Использовать NULL_WRITER для игнорирования сообщения об ошибке из окна команд MATLAB.

Object... args

Аргументы для передачи функции MATLAB.

Прибыль

Экземпляр Future<T>

Броски

java.lang.IllegalStateException

Сеанс MATLAB недоступен.
Пример
Future<Double> future = engine.fevalAsync("sqrt", 4);

eval

void eval(String command, Writer output, Writer error)

void eval(String command)

Описание

Вычислите оператор MATLAB как строку синхронно.

Параметры

String command

Оператор MATLAB для оценки.

Writer output

Поток, используемый для хранения стандартных выходных данных инструкции MATLAB. Если модуль записи не указан, выходные данные записываются в командное окно или терминал. Использовать NULL_WRITER для игнорирования выходных данных из окна команд MATLAB.

Writer error

Поток, используемый для сохранения стандартной ошибки из инструкции MATLAB. Если модуль записи не указан, выходные данные записываются в командное окно или терминал. Использовать NULL_WRITER для игнорирования сообщения об ошибке из окна команд MATLAB.

Броски

java.util.concurrent.CancellationException

Оценка функции MATLAB отменена.

java.lang.InterruptedException

Оценка функции MATLAB была прервана.

java.lang.IllegalStateException

Сеанс MATLAB недоступен.

com.mathworks.engine.MatlabExcecutionException

Ошибка в инструкции MATLAB во время выполнения.

com.mathworks.engine.MatlabSyntaxException

Синтаксическая ошибка в инструкции MATLAB.

Пример
engine.eval("result = sqrt(4)");

evalAsync

Future<Void> evalAsync(String command, Writer output, Writer error)

Future<Void> evalAsync(String command)

Описание

Вычислите оператор MATLAB как строку асинхронно.

Параметры

String command

Оператор MATLAB для оценки.

Writer output

Поток, используемый для хранения стандартных выходных данных инструкции MATLAB. Если модуль записи не указан, выходные данные записываются в командное окно или терминал. Использовать NULL_WRITER для игнорирования выходных данных из окна команд MATLAB.

Writer error

Поток, используемый для сохранения стандартной ошибки из инструкции MATLAB. Если модуль записи не указан, выходные данные записываются в командное окно или терминал. Использовать NULL_WRITER для игнорирования сообщения об ошибке из окна команд MATLAB.

Прибыль

Экземпляр Future<Void>

Броски

java.lang.IllegalStateException

Сеанс MATLAB недоступен.

Пример
Future<Void> future = engine.evalAsync("sqrt(4)");

getVariable

<T> T getVariable(String varName)

Описание

Получение переменной из базовой рабочей области MATLAB.

Параметры

String varName

Имя переменной в базовой рабочей области MATLAB.

Прибыль

Переменная, переданная из базовой рабочей области MATLAB

Броски

java.util.concurrent.CancellationException

Оценка этой функции отменена.

java.lang.InterruptedException

Оценка этой функции прерывается.

java.lang.IllegalStateException

Сеанс MATLAB недоступен.

Пример
double myVar = engine.getVariable("myVar");

getVariableAsync

<T> Future<T> getVariableAsync(String varName)

Описание

Асинхронное получение переменной из базовой рабочей области MATLAB.

Параметры

String varName

Имя переменной в базовой рабочей области MATLAB.

Прибыль

Экземпляр Future<T>

Броски

java.lang.IllegalStateException

Сеанс MATLAB недоступен.

Пример
Future<Double> future = engine.getVariableAsync("myVar");

putVariable

void putVariable(String varName, T varData)

Описание

Поместите переменную в базовую рабочую область MATLAB.

Параметры

String varName

Имя переменной, создаваемой в базовой рабочей области MATLAB.

T varData

Значение переменной, создаваемой в базовой рабочей области MATLAB.

Броски

java.util.concurrent.CancellationException

Оценка этой функции отменена.

java.lang.InterruptedException

Оценка этой функции прерывается.

java.lang.IllegalStateException

Сеанс MATLAB недоступен.

Пример
engine.putVariable("myVar", 100);

putVariableAsync

Future<Void> putVariableAsync(String varName, T varData)

Описание

Помещайте переменную в базовую рабочую область MATLAB асинхронно.

Параметры

String varName

Имя переменной, создаваемой в базовой рабочей области MATLAB.

T varData

Значение переменной, создаваемой в базовой рабочей области MATLAB.

Прибыль

Экземпляр Future<Void>

Броски

java.lang.IllegalStateException

Сеанс MATLAB недоступен.

Пример
Future<Void> future = engine.putVariableAsync("myVar", 100);

disconnect

void disconnect()

Описание

Отключитесь от текущего сеанса MATLAB.

Броски

com.mathworks.engine.EngineException

Текущий сеанс MATLAB не может быть отключен.

Пример
engine.disconnect();

disconnectAsync

Future<Void> disconnectAsync()

Описание

Отключитесь от текущего сеанса MATLAB.

Пример
Future<Void> future = engine.disconnectAsync();

quit

void quit()

Описание

Принудительное завершение текущего сеанса MATLAB.

Броски

com.mathworks.engine.EngineException

Невозможно завершить текущий сеанс 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Оператор -with-resources автоматически разъединяет или завершает сеанс MATLAB в конце оператора.

MatlabEngine close() метод разъединяет или завершает текущий сеанс MATLAB в зависимости от контекста.

  • Если процесс Java запускает сеанс MATLAB как сеанс, не являющийся общим по умолчанию, close() завершает MATLAB.

  • Если сеанс MATLAB является общим сеансом, close() отключает MATLAB от этого процесса Java. MATLAB завершается при отсутствии других соединений.

Для принудительного отключения или отключения текущего сеанса MATLAB явно вызовите MatlabEngine.quit(), MatlabEngine.disconnect()или их асинхронные аналоги.

Пример
engine.close();
Представлен в R2016b