主要内容

执行MATLAB函数从Java

调用MATLAB功能

你可以执行MATLAB®从Java函数®使用MatlabEngine函数宏指令fevalAsync方法。这些方法的工作方式类似于MATLAB函数宏指令函数。使用函数宏指令fevalAsync当您想要将函数执行的结果返回给Java或从Java传递参数时。

调用MATLAB函数:

  • 将函数名作为字符串传递。

  • 定义MATLAB函数所需的输入参数。

  • 指定MATLAB函数期望的输出数量(如果没有指定,假设为1)。

  • 为MATLAB函数的输出定义适当的返回类型。

  • 使用写入器将输出从MATLAB命令窗口重定向到Java。

你也可以用theMatlabEngineevalevalAsync计算MATLAB表达式的方法。这些方法使您能够在MATLAB工作空间中创建变量,但不返回值。

执行带有单个返回参数的函数

本示例代码使用MATLAB√6函数查找双精度浮点数数组中元素的平方根。的函数宏指令方法返回一个双数组,其中包含√6函数调用。

进口com.mathworks.engine。*;public class javaFevalFunc{public static void main(String[] args) throws Exception{MatlabEngine eng = MatlabEngine. startmatlab ();Double [] a = {2.0,4.0, 6.0};Double[]根= eng。函数宏指令“√”);for (double e: root) {System.out.println(e);} eng.close ();} }

执行带有多个返回参数的函数

本示例代码使用MATLAB肾小球囊性肾病函数从作为输入参数传递的两个整数值中找到最大公约数和Bézout系数。的函数宏指令方法返回一个对象数组,其中包含肾小球囊性肾病函数调用。返回值为整数。

由于MATLAB肾小球囊性肾病函数返回三个输出参数时,指定返回值的数量作为第一个参数函数宏指令方法。

进口com.mathworks.engine。*;public class javaFevalFcnMulti {public static void main(String[] args) throws Exception {MatlabEngine eng = MatlabEngine. startmatlab ();对象[]results = eng. txt函数宏指令(3, "gcd", 40, 60); Integer G = (Integer)results[0]; Integer U = (Integer)results[1]; Integer V = (Integer)results[2]; eng.close(); } }

何时指定输出参数的数量

MatlabEngine函数宏指令fevalAsync方法使您能够指定MATLAB函数返回的输出参数的数量。默认情况下,MATLAB函数的输出参数的数量被假定为1

如果您想调用一个没有输出或有多个输出的MATLAB函数,请指定该数字作为传递给的第一个参数函数宏指令fevalAsync

例如,这段代码调用MATLAB肾小球囊性肾病函数的三个输出参数语法:

对象[]results = eng. txt函数宏指令(3, "gcd", 40, 60);

MATLAB函数可以根据请求的输出数量而有不同的行为。有些函数可以不返回输出或返回指定数量的输出。例如,MATLAB暂停函数在指定的秒数内保持执行。然而,如果你打电话暂停使用输出参数,函数立即返回一个状态值。因此,这段代码不会导致MATLAB暂停,因为函数宏指令请求一个输出参数。

eng。函数宏指令(“暂停”,10);

要在请求的10秒内暂停MATLAB执行,指定输出的数量为0

eng。函数宏指令(0,“暂停”,10);

请注意

要确保调用MATLAB函数时没有输出,请指定返回参数的数量为0

相关的话题