主要内容

com.mathworks.engine.MatlabEngine

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

描述

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

创建

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

不支金宝app持的启动选项

引擎不支持这些MATLAB启动选项:金宝app

  • - 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

静态MatlabEngine startMatlab(字符串[]选项)

startMatlab()

描述

同步启动MATLAB。

参数

String[]选项

启动选项用于启动MATLAB引擎。您可以指定多个启动选项。引擎支持所有的MATL金宝appAB启动选项,除了列在不支金宝app持的启动选项.有关选项列表,请参阅特定于平台的命令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)

startMatlabAsync()

描述

异步启动MATLAB。一旦MATLAB启动,取消是不需要操作的。

参数

String[]选项

启动选项用于启动MATLAB引擎。您可以指定多个启动选项。引擎支持所有的MATL金宝appAB启动选项,除了列在不支金宝app持的启动选项.有关选项列表,请参阅特定于平台的命令matlab (Windows),matlab (macOS),或matlab (Linux)

返回

的实例未来的< MatlabEngine >

例子
Future Future = MatlabEngine. startmatlabasync ();

findMatlab

静态字符串[]

描述

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

返回

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

抛出

com.mathworks.engine.EngineException

如果在搜索MATLAB会话期间出现故障。

例子
String[] engines = MatlabEngine.findMatlab();

findMatlabAsync

static Future findMatlabAsync()

描述

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

返回

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

例子
Future Future = MatlabEngine.findMatlabAsync();

connectMatlab

静态的MatlabEngine

静态的MatlabEngine

描述

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

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

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

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

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

参数

字符串名称

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

返回

的一个例子MatlabEngine

抛出

com.mathworks.engine.EngineException

MATLAB无法启动或连接。

例子
MatlabEngine. connectmatlab ();

connectMatlabAsync

静态未来 connectMatlabAsync(字符串名称)

静态Future connectMatlabAsync . com

描述

异步连接到本地计算机上的共享MATLAB会话。的行为与的相同connectMatlab只不过这个机制是异步的。一旦连接到MATLAB,那么取消是不需要操作的。

参数

字符串名称

共享的MATLAB会话的名称。

返回

的一个例子未来的< MatlabEngine >

例子
Future Future = MatlabEngine. connectmatlabasync ();

getCurrentMatlab

getCurrentMatlab()

描述

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

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

返回

的一个例子MatlabEngine

抛出

com.mathworks.engine.EngineException

不支持从用户线程调用。金宝app

例子
MatlabEngine = 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金宝appsupportedTypeExeption

存在不支持的数据类型。金宝app

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 = engine.evalAsync("sqrt(4)");

getVariable

T getVariable(String 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(String 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会话不可用。

例子
未来未来=引擎。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中引入