马铃薯®显示错误消息和来自Matlab命令窗口中未终止的函数的函数的输出。您可以将此输出重定向到Java®用一个java.io.stringWriter.
。这Matlabengine.
Feval.
那Fevalasync.
那求解
, 和evalasync.
方法支持使用输出万博1manbetx流重定向MATLAB输出。
matlab.谁是
命令显示有关MATLAB命令窗口中当前工作区变量的信息。用一个StringWriter.
将此输出物流在Java中。
导入com.mathworks.eengine。*;导入java.io. *;公共类RedirectOutput {公共静态void main(String [] args)抛出异常{matlabengine引擎= matlabengine.startmatlab();//评估创建变量eng.evalasync的表达式(“[x,y] = meshgrid(-2:.2:2);”);eng.evalasync(“z = x. * exp(-x。^ 2 - y. ^ 2);”);//获取WhOS命令StringWriter Writer = New StringWriter()的输出;Eng.eval(“Whos”,Writer,Null);system.out.println(writer.tostring());作家.Close();eng.Close(); } }
此示例代码尝试评估具有语法错误的MATLAB语句(不平衡单引号)。在MATLAB中输入此语句会导致错误:
DISP('你好'')
MATLAB在“命令”窗口中返回此错误消息:
disp('hello'')↑错误:字符向量未正确终止。
要将此错误消息重定向到Java,请使用aStringWriter.
与之求解
方法。赶上matlatsyntaxexception.
错误抛出的异常,并将Matlab错误消息写入Java。
导入com.mathworks.eengine。*;导入java.io. *;公共类javaredirectoutout {public静态void main(string [] args)抛出异常{matlabengine引擎= matlabengine.startmatlab();StringWriter Writer = new StringWriter();尝试{eng.eval(“disp('hello'')”,null,writer);} catch(matlabsyntaxexception e){system.out.println(“重定向到java的错误:”);system.out.println(writer.tostring());} writer.close();eng.Close();}}