Java调用simulink

来源:互联网 发布:js indexof array 编辑:程序博客网 时间:2024/05/22 17:26
matlab官方指导:http://cn.mathworks.com/help/matlab/matlab_external/run-simulink-simulation-from-java.html

1.安装matlab2016b 或 matlab2017a
2. 把matlabroot/bin/win64添加到path环境变量中,不然java启动不了matlab,会报no nativemvm in java.library.path错误
3.安装Java1.7或以上版本(注意java 32/64bit 与 matlab 相对应)
4. 把matlab安装路径下的\extern\engines\java\jar\engine.jar导入java工程

5.把simulink文件(.mdl或.slx)复制到java工程,这里以txt.slx为例,位置如下:



6. Java调用代码:
import com.mathworks.engine.*;import java.util.concurrent.Future;import java.util.Arrays;public class RunSimulation {    public static void main(String[] args) throws Exception {        MatlabEngine eng = MatlabEngine.startMatlab();        Future<Void>  fLoad = eng.evalAsync("load_system('txt')");        while (!fLoad.isDone()){            System.out.println("Loading Simulink model...");            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("Running Simulation...");            Thread.sleep(10000);        }        // Get simulation data        eng.eval("y = simOut.get('yOut');");        eng.eval("t = simOut.get('tOut');");        // Graph results and create image file        eng.eval("plot(t,y)");        eng.eval("print('vdpPlot','-djpeg')");        // Return results to Java        double[][] y = eng.getVariable("y");        double[] t = eng.getVariable("t");        // Display results        System.out.println("Simulation result " + Arrays.deepToString(y));        System.out.println("Time vector " + Arrays.toString(t));        eng.close();    }}
注:具体的输入、输出参数由simulink模型而定。
 

原创粉丝点击