主要内容

重定向MATLAB命令窗口输出到Java

输出MATLAB命令窗口

MATLAB®在MATLAB命令窗口中显示错误消息和未以分号结束的函数的输出。您可以将此输出重定向到Java®使用一个java.io.StringWriter.的MatlabEngine函数宏指令fevalAsynceval,evalAsync方法支持使用输出金宝app流重定向MATLAB输出。

重定向MATLAB输出

MATLAB命令在MATLAB命令窗口中显示有关当前工作空间变量的信息。使用一个StringWriter将输出流输出到Java。

进口com.mathworks.engine。*;进口. io . *;public class RedirectOutput {public static void main(String[] args) throws Exception {MatlabEngine engine = MatlabEngine. startmatlab ();//计算创建变量的表达式evalAsync(“(X, Y) = meshgrid(2: .2:2);”);eng。evalAsync("Z = X.*exp(-X.^2 - Y.^2);"); // Get the output of the whos command StringWriter writer = new StringWriter(); eng.eval("whos", writer, null); System.out.println(writer.toString()); writer.close(); eng.close(); } }

重定向MATLAB错误消息Java

这个示例代码试图计算一个有语法错误(不平衡单引号)的MATLAB语句。在MATLAB中输入这条语句会导致错误:

disp (“你好”)

MATLAB在命令窗口返回这个错误信息:

disp('Hello')↑错误:字符向量没有正确终止。

要将此错误消息重定向到Java,请使用StringWritereval方法。抓住了MatlatSyntaxException错误抛出的异常,并将MATLAB错误消息写入Java。

进口com.mathworks.engine。*;进口. io . *;public class javaRedirectOut {public static void main(String[] args) throws Exception {MatlabEngine engine = MatlabEngine. startmatlab ();StringWriter writer = new StringWriter();try {engl .eval("disp('Hello')", null, writer);} catch (MatlabSyntaxException e) {System.out.}println("错误重定向到Java: ");System.out.println (writer.toString ());} writer.close ();eng.close ();} }

相关的话题