运行金宝app模拟从Java
MATLAB运行仿真命令
你可以运行Simulin金宝appk®MATLAB仿真®Java引擎API®.下面是以编程方式运行模拟的基本步骤。
创建一个MATLAB引擎对象并启动一个MATLAB会话。
在MATLAB中加金宝app载Simulink模型(
load_system
(金宝app模型)).使用特定的模拟参数运行模拟(
sim卡
(金宝app模型)).返回的方法访问模拟结果
金宝app仿真软件。SimulationOuput
(金宝app模型)对象。
有关从MATLAB以编程方式运行模拟的信息,请参见运行个别模拟(金宝app模型).
运行vdp Model fromJava
的仿真软金宝app件vdp
方框图模拟范德波尔方程,这是一个二阶微分方程。该模型利用模型定义的初始条件和构型参数求解方程。
MATLAB运行模拟代码
此MATLAB代码显示了以编程方式运行仿真的命令。的金宝app仿真软件。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代码运行Simulink金宝appvdp
模型仿真并将结果返回给Java。实现执行这些操作:
创建一个MATLAB引擎对象并启动一个MATLAB会话。
调用MATLAB
load_system
命令启动Simulink并加载金宝appvdp
异步模型。轮询任务直到未来
的回报。调用MATLAB
sim卡
命令,设置仿真参数并运行仿真。轮询任务直到未来
的回报。捕获模拟的结果。的输出。
sim卡
函数是一个MATLAB金宝app仿真软件。SimulationOuput
(金宝app模型)对象,该对象是在MATLAB基础工作空间中创建的。引擎API不支持这种类型的对象。金宝app因此,本例使用对象
得到
方法在MATLAB工作空间中访问仿真数据。创建模拟数据的图形,并将该图形导出到JPEG文件。
将模拟结果和时间向量返回给Java为
双
数组。
进口com.mathworks.engine。*;进口java.util.concurrent.Future;进口java.util.Arrays;公共类RunSimulation{公共静态void main(String[] args)抛出异常{MatlabEngine eng = MatlabEngine. startmatlab ();FuturefLoad = eng.evalAsync("load_system('vdp')");while (! flood . isdone ()){System.out. while (!println(“加载Simuli金宝appnk模型…”);thread . sleep (10000);} Future 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(); } }