您的位置:首页 > 编程语言 > Java开发

Java调用simulink

2017-06-06 19:18 671 查看
matlab官方指导:http://cn.mathworks.com/help/matlab/matlab_external/run-simulink-simulation-from-java.html1.安装matlab2016b或matlab2017a2.把matlabroot/bin/win64添加到path环境变量中,不然java启动不了matlab,会报nonativemvminjava.library.path错误3.安装Java1.7或以上版本(注意java32/64bit与matlab相对应)4.把matlab安装路径下的\extern\engines\java\jar\engine.jar导入java工程5.把simulink文件(.mdl或.slx)复制到java工程,这里以txt.slx为例,位置如下:6.Java调用代码:
importcom.mathworks.engine.*;
importjava.util.concurrent.Future;
importjava.util.Arrays;

publicclassRunSimulation{
publicstaticvoidmain(String[]args)throwsException{
MatlabEngineeng=MatlabEngine.startMatlab();
Future<Void>fLoad=eng.evalAsync("load_system('txt')");
while(!fLoad.isDone()){
System.out.println("LoadingSimulinkmodel...");
Thread.sleep(10000);
}
Future<Void>fSim=eng.evalAsync("simOut=sim('txt','SaveOutput',"+
"'on','OutputSaveName','yOut',"+
"'SaveTime','on','TimeSaveName','tOut');");
while(!fSim.isDone()){
System.out.println("RunningSimulation...");
Thread.sleep(10000);
}
//Getsimulationdata
eng.eval("y=simOut.get('yOut');");
eng.eval("t=simOut.get('tOut');");
//Graphresultsandcreateimagefile
eng.eval("plot(t,y)");
eng.eval("print('vdpPlot','-djpeg')");
//ReturnresultstoJava
double[][]y=eng.getVariable("y");
double[]t=eng.getVariable("t");
//Displayresults
System.out.println("Simulationresult"+Arrays.deepToString(y));
System.out.println("Timevector"+Arrays.toString(t));
eng.close();
}
}
注:具体的输入、输出参数由simulink模型而定。

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java matlab simulink idea