主要内容

com.mathworks.engine.MatlabEngine

Java类使用MATLAB作为一个计算引擎

描述

com.mathworks.engine.MatlabEngine类使用MATLAB®进程作为Java的计算引擎®.这个类提供了Java语言和MATLAB之间的接口,使您能够从Java计算MATLAB函数和表达式。

创建

MatlabEngine类提供了静态方法来同步或异步地启动MATLAB和连接到共享的MATLAB会话。只有这些静态方法可以实例化这个类:

不支万博1manbetx持的启动选项

引擎不支持以下MATLAB启动选项:万博1manbetx

  • - h

  • -

  • -?

  • - n

  • - e

  • -softwareopengl

  • 日志文件

有关MATLAB启动选项的信息,请参见常用的启动选项

方法总结

静态方法

startMatlab

同步启动MATLAB。

startMatlabAsync

异步启动MATLAB。

findMatlab

从本地机器同步查找所有可用的共享MATLAB会话。

findMatlabAsync

从本地机器异步查找所有可用的共享MATLAB会话。

connectMatlab

同步连接到本地机器上的共享MATLAB会话。

connectMatlabAsync

异步连接到本地机器上的共享MATLAB会话。

getCurrentMatlab

从MATLAB环境调用时连接到当前MATLAB会话。

成员变量

NULL_WRITER

使用一个忽略MATLAB命令窗口内容的写入器。

成员函数

函数宏指令

同步计算一个带有参数的MATLAB函数。

fevalAsync

异步计算带有参数的MATLAB函数。

eval

将MATLAB表达式作为字符串同步计算。

evalAsync

异步地将MATLAB表达式计算为字符串。

getVariable

同步地从MATLAB基础工作区获取一个变量。

getVariableAsync

异步地从MATLAB基本工作区获取一个变量。

putVariable

同步地将一个变量放入MATLAB基础工作区。

putVariableAsync

异步地将一个变量放入MATLAB基本工作区。

断开连接

同步断开当前MATLAB会话。

disconnectAsync

异步断开当前MATLAB会话。

辞职

强制同步关闭当前MATLAB会话。

quitAsync

强制异步关闭当前MATLAB会话。

关闭

断开或终止当前MATLAB会话。

方法详细信息

startMatlab

startMatlab(String[] options)

静态MatlabEngine

描述

同步启动MATLAB。

参数

String[]选项

启动选项用于启动MATLAB引擎。您可以指定多个启动选项。该引擎支持所有MATL万博1manbetxAB启动选项,除了中列出的选项不支万博1manbetx持的启动选项.有关选项列表,请参阅特定于平台的命令matlab (Windows)matlab (macOS),或matlab (Linux)

返回

的实例MatlabEngine

抛出

com.mathworks.engine.EngineException

MATLAB无法启动。

例子
String[]选项= {" -noFigureWindows”,“- r”、“cd H: "};MatlabEngine eng = MatlabEngine. startmatlab (options);

startMatlabAsync

static Future startMatlabAsync(String[] options)

静态Future startMatlabAsync()

描述

异步启动MATLAB。一旦MATLAB启动了,那么取消是没有操作的。

参数

String[]选项

启动选项用于启动MATLAB引擎。您可以指定多个启动选项。该引擎支持所有MATL万博1manbetxAB启动选项,除了中列出的选项不支万博1manbetx持的启动选项.有关选项列表,请参阅特定于平台的命令matlab (Windows)matlab (macOS),或matlab (Linux)

返回

的实例未来的< MatlabEngine >

例子
Future Future = MatlabEngine. startmatlabasync ();

findMatlab

静态字符串[]

描述

同步查找本地机器上所有共享的MATLAB会话。

返回

本地机器上所有共享MATLAB会话的名称数组,如果本地机器上没有可用的共享MATLAB会话,则为空向量。

抛出

com.mathworks.engine.EngineException

如果在搜索MATLAB会话期间出现失败。

例子
字符串[]引擎= MatlabEngine.findMatlab();

findMatlabAsync

static Future findMatlabAsync()

描述

异步查找本地机器上所有共享的MATLAB会话。

返回

的一个实例未来的< String [] >

例子
Future Future = MatlabEngine.findMatlabAsync();

connectMatlab

静态MatlabEngine connectMatlab(字符串名称)

静态MatlabEngine连接matlab ()

描述

同步连接到本地机器上的共享会话。

  • 如果指定了共享MATLAB会话的名称,但引擎无法找到具有该名称的会话,则引擎抛出异常。

  • 如果未指定名称且没有可用的共享MATLAB会话,引擎将使用默认选项启动一个新的共享MATLAB会话。

  • 如果未指定名称且有可用的共享MATLAB会话,则引擎连接到第一个可用会话。

若要从MATLAB环境调用时连接到当前MATLAB会话,请使用getCurrentMatlab代替。

参数

字符串名称

共享MATLAB会话的名称。使用findMatlab来获取共享MATLAB会话的名称。

返回

的一个实例MatlabEngine

抛出

com.mathworks.engine.EngineException

MATLAB无法启动或连接。

例子
MatlabEngine engine = MatlabEngine. connectmatlab ();

connectMatlabAsync

static Future connectMatlabAsync(String name)

static Future connectMatlabAsync

描述

异步连接到本地计算机上的共享MATLAB会话。的行为与的行为相同connectMatlab除了机制是异步的。一旦与MATLAB建立了连接,那么取消是没有操作的。

参数

字符串名称

共享MATLAB会话的名称。

返回

的一个实例未来的< MatlabEngine >

例子
Future Future = MatlabEngine. connectmatlabasync ();

getCurrentMatlab

getCurrentMatlab()

描述

从MATLAB环境调用时连接到当前MATLAB会话。

若要从引擎应用程序调用时连接到MATLAB会话,请使用connectMatlab

返回

的一个实例MatlabEngine

抛出

com.mathworks.engine.EngineException

不支持从用户线程调用。万博1manbetx

例子
MatlabEngine engine = MatlabEngine. getcurrentmatlab ();
另请参阅

从Java回调到MATLAB

函数宏指令

T feval(int nlhs, String func, Writer output, Writer error, Object…args)

T feval(int nlhs, String func, Object…args)

T feval(String func, Writer output, Writer error, Object…args)

T feval(String func, Object…args)

描述

同步计算带有输入参数的MATLAB函数。

参数

字符串函数

要计算的MATLAB函数或脚本的名称。

int nlhs

预期输出数。默认值是1。

如果nlhs大于1,返回类型T必须[] <对象>

如果nlhs0,返回类型T必须<空><?>

如果nlhs1,返回类型T可以是预期类型还是<对象>如果不知道类型。

作家输出

流用于存储来自MATLAB函数的标准输出。如果没有指定写入器,则输出将写入命令窗口或终端。使用NULL_WRITER忽略MATLAB命令窗口的输出。

作者错误

流用来存储来自MATLAB的标准误差函数。如果没有指定写入器,则输出将写入命令窗口或终端。使用NULL_WRITER忽略来自MATLAB命令窗口的错误消息。

对象……arg游戏

要传递给MATLAB函数的参数。

返回

MATLAB函数执行结果

抛出

java.util.concurrent.CancellationException

一个MATLAB函数的计算被取消。

java.lang.InterruptedException

一个MATLAB函数的计算中断。

java.lang.IllegalStateException

MATLAB会话不可用。

com.mathworks.engine.MatlabExcecutionException

该函数存在MATLAB运行时错误。

com.mathworks.engine.Un万博1manbetxsupportedTypeExeption

存在不支持的数据类型。万博1manbetx

com.mathworks.engine.MatlabSyntaxException

MATLAB函数有语法错误。

例子
双结果=引擎。函数宏指令“√”,4);

fevalAsync

Future fevalAsync(int nlhs, String func, Writer output, Writer error, Object…args)

Future fevalAsync(int nlhs, String func, Object…args)

Future fevalAsync(String func, Writer output, Writer error, Object…args)

Future fevalAsync(String func, Object…args)

描述

异步计算MATLAB函数的输入参数。

参数

字符串函数

要计算的MATLAB函数或脚本的名称。

int nlhs

预期输出数。默认是1

如果nlhs大于1,返回类型T必须[] <对象>

如果nlhs0,返回类型T必须<空><?>

如果nlhs1,返回类型T可以是预期类型还是<对象>如果不知道类型。

作家输出

流用于存储来自MATLAB函数的标准输出。如果没有指定写入器,则输出将写入命令窗口或终端。使用NULL_WRITER忽略MATLAB命令窗口的输出。

作者错误

流用来存储来自MATLAB的标准误差函数。如果没有指定写入器,则输出将写入命令窗口或终端。使用NULL_WRITER忽略来自MATLAB命令窗口的错误消息。

对象……arg游戏

要传递给MATLAB函数的参数。

返回

的一个实例未来的< T >

抛出

java.lang.IllegalStateException

MATLAB会话不可用。
例子
Future Future = engine。fevalAsync“√”,4);

eval

void eval(字符串命令,写入器输出,写入器错误)

void eval(字符串命令)

描述

将MATLAB语句作为字符串同步计算。

参数

字符串命令

MATLAB语句求值。

作家输出

流用于存储MATLAB语句的标准输出。如果没有指定写入器,则输出将写入命令窗口或终端。使用NULL_WRITER忽略MATLAB命令窗口的输出。

作者错误

流用于存储来自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语句语法错误。

例子
引擎。eval("result = sqrt(4)");

evalAsync

未来<无效> evalAsync(字符串命令,写入器输出,写入器错误)

未来<无效> evalAsync(字符串命令)

描述

异步地将MATLAB语句计算为字符串。

参数

字符串命令

MATLAB语句求值。

作家输出

流用于存储MATLAB语句的标准输出。如果没有指定写入器,则输出将写入命令窗口或终端。使用NULL_WRITER忽略MATLAB命令窗口的输出。

作者错误

流用于存储来自MATLAB语句的标准误差。如果没有指定写入器,则输出将写入命令窗口或终端。使用NULL_WRITER忽略来自MATLAB命令窗口的错误消息。

返回

的一个实例未来的< >空白

抛出

java.lang.IllegalStateException

MATLAB会话不可用。

例子
Future Future = engine.evalAsync("sqrt(4)");

getVariable

T getVariable(字符串varName)

描述

从MATLAB基本工作区获取一个变量。

参数

字符串varName

MATLAB基本工作空间中变量的名称。

返回

从MATLAB基础工作空间传递的变量

抛出

java.util.concurrent.CancellationException

此函数的求值被取消。

java.lang.InterruptedException

这个函数的求值被中断。

java.lang.IllegalStateException

MATLAB会话不可用。

例子
double myVar = engine.getVariable("myVar");

getVariableAsync

Future getVariableAsync(String varName)

描述

异步地从MATLAB基本工作区获取一个变量。

参数

字符串varName

MATLAB基础工作空间中的变量名称。

返回

的一个实例未来的< T >

抛出

java.lang.IllegalStateException

MATLAB会话不可用。

例子
Future Future = engine.getVariableAsync("myVar");

putVariable

void putVariable(字符串varName, T varData)

描述

将一个变量放入MATLAB基本工作区。

参数

字符串varName

要在MATLAB基本工作空间中创建的变量的名称。

T varData

要在MATLAB基本工作空间中创建的变量的值。

抛出

java.util.concurrent.CancellationException

此函数的求值被取消。

java.lang.InterruptedException

这个函数的求值被中断。

java.lang.IllegalStateException

MATLAB会话不可用。

例子
引擎。putVariable(“myvar#”,100);

putVariableAsync

putVariableAsync(String varName, T varData)

描述

异步地将一个变量放入MATLAB基本工作区。

参数

字符串varName

要在MATLAB基本工作空间中创建的变量的名称。

T varData

要在MATLAB基本工作空间中创建的变量的值。

返回

的一个实例未来的< >空白

抛出

java.lang.IllegalStateException

MATLAB会话不可用。

例子
Future Future = engine。putVariableAsync("myVar", 100);

断开连接

空白断开()

描述

断开当前MATLAB会话。

抛出

com.mathworks.engine.EngineException

无法断开当前MATLAB会话。

例子
engine.disconnect ();

disconnectAsync

未来的< >空白disconnectAsync ()

描述

断开当前MATLAB会话。

例子
Future Future = engine.disconnectAsync();

辞职

无效退出()

描述

强制关闭当前MATLAB会话。

抛出

com.mathworks.engine.EngineException

当前MATLAB会话无法关闭。

例子
engine.quit ();

quitAsync

未来的< >空白quitAsync ()

描述

强制异步关闭当前MATLAB会话,而不等待终止。

返回

的一个实例未来的< >空白

例子
Future Future = engine.quitAsync();

关闭

空白close ()

描述

MatlabEngine提供了close ()方法来实现java.lang.AutoCloseable界面MatlabEngine对象。这close ()方法使您可以使用试一试-with-resources语句在语句结束时自动断开或终止MATLAB会话。

MatlabEngineclose ()方法断开或终止当前MATLAB会话,具体取决于上下文。

  • 如果Java进程将MATLAB会话作为默认的非共享会话启动,close ()终止MATLAB。

  • 如果MATLAB会话是共享会话,close ()断开MATLAB与Java进程的连接。MATLAB在没有其他连接时终止。

若要强制关闭或断开当前MATLAB会话,请显式调用MatlabEngine.quit ()MatlabEngine.disconnect (),或它们的异步对等体。

例子
engine.close ();
在R2016b中引入