你可以执行MATLAB®从Java函数®使用MatlabEngine
函数宏指令
和fevalAsync
方法。这些方法的工作方式类似于MATLAB函数宏指令
函数。使用函数宏指令
和fevalAsync
当您想要将函数执行的结果返回给Java或从Java传递参数时。
调用MATLAB函数:
将函数名作为字符串传递。
定义MATLAB函数所需的输入参数。
指定MATLAB函数期望的输出数量(如果没有指定,假设为1)。
为MATLAB函数的输出定义适当的返回类型。
使用写入器将输出从MATLAB命令窗口重定向到Java。
你也可以用theMatlabEngine
eval
和evalAsync
计算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
.