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调用存储过程
- 如何在Java中实现远程方法调用
- java调用存储过程返回参数
- JAVASCRIPT调用JAVA
- PHP 如何调用 JAVA 类库
- 如何调用JavaBean
- java调用存储过程代码
- Java调用外部程序的方法
- 请教:在java中如何实现线程的函数互斥调用,用synchronized好像实现不了
- Java远程方法调用 4
- Java如何调用外部外部命令?
- Servlet调用JavaBean输出结果集示例
- JAVA通过JNI调用本地C语言方法
- JAVA/JSP学习系列之十三(Applet调用JavaScript函数)(译)
- Java远程方法调用 3
- 从java程序中调用其它程序
- 让tomcat一运行就开始调用某个java类
- Java调用Oracle存储过程(转载)
- 利用Java调用可执行命令实例
- 利用Java调用可执行命令实例