主要内容

运行金宝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会话。

  • 调用MATLABload_system命令启动Simulink并加载金宝appvdp异步模型。轮询任务直到未来的回报。

  • 调用MATLABsim卡命令,设置仿真参数并运行仿真。轮询任务直到未来的回报。

  • 捕获模拟的结果。的输出。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 ();Future fLoad = 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(); } }

相关的话题