运行金宝app模拟从Java
MATLAB命令运行仿真
您可以运行仿真软件金宝app®使用MATLAB模拟®引擎API的Java®。下面是运行仿真编程的基本步骤。
创建一个MATLAB引擎对象并启动一个MATLAB会话。
加载在MATLAB金宝app仿真软件模型(
load_system
(金宝app模型))。运行仿真与特定的仿真参数(
sim卡
(金宝app模型))。使用的方法访问模拟的结果返回
金宝appSimulink.SimulationOuput
(金宝app模型)对象。
模拟运行的信息从MATLAB编程,明白了运行单个模拟(金宝app模型)。
运行vdp模型从Java
的仿真软金宝app件vdp
方块图模拟了范德波尔方程,这是一个二阶微分方程。该模型解决了方程使用初始条件和配置参数定义的模型。
MATLAB代码运行仿真
这个MATLAB代码显示了命令来运行仿真编程。的金宝appSimulink.SimulationOuput
对象得到
方法返回的结果和时间向量。
mdl =“vdp”;load_system (mdl);simOut = sim (mdl,“SaveOutput”,“上”,…“OutputSaveName”,“你”,…“SaveTime”,“上”,…“TimeSaveName”,“兜售”);y = simOut.get (“你”);t = simOut.get (“兜售”);
图表的数据
这个MATLAB代码创建了一个图形仿真图产出和出口的JPEG图像文件。
情节(t、y)打印(“vdpPlot”,“-djpeg”)
Java代码运行仿真
这个Java代码运行仿真软件金宝appvdp
模型模拟结果并返回到Java。实现执行这些操作:
创建一个MATLAB引擎对象并启动一个MATLAB会话。
调用MATLAB
load_system
命令开始仿真软件和负载金宝appvdp
异步模型。调查任务,直到未来
的回报。调用MATLAB
sim卡
命令设置仿真参数和运行模拟。调查任务,直到未来
的回报。了仿真的结果。的输出
sim卡
函数是一个MATLAB金宝appSimulink.SimulationOuput
(金宝app模型)对象,它是在MATLAB中创建基本工作空间。引擎API不支持这种类型的对象。金宝app因此,这个示例使用对象
得到
方法在MATLAB仿真数据的访问工作区。创建一个图形仿真数据和出口这个图的一个JPEG文件。
返回向量Java仿真结果和时间
双
数组。
进口com.mathworks.engine。*;进口java.util.concurrent.Future;进口java.util.Arrays;公开课RunSimulation{公共静态空main (String [] args)抛出异常{MatlabEngine eng = MatlabEngine.startMatlab ();未来<空白> fLoad = eng.evalAsync (“load_system (vdp) ");而(! fLoad.isDone ()) {system . out。println(“加载仿真软件模型金宝app…”);thread . sleep (10000);未来}<空白> fSim = eng。evalAsync (“simOut = sim (vdp,“SaveOutput”,“+”‘上’,‘OutputSaveName’,‘你’,“+”“SaveTime”,“上”,“TimeSaveName”,“兜售”);”); 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(); } }