Java调用simulink

xiaoxiao2021-02-28  120

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模型而定。

转载请注明原文地址: https://www.6miu.com/read-21035.html

最新回复(0)