主要内容

部署应用程序与洛伦兹系统的实时仿真结果

这个例子展示了如何开发一个应用程序,使用回调函数来模拟输入和输出的模拟仿真软件®的洛伦兹模型系统。万博1manbetx然后可以部署应用程序与仿真软件编译器™。万博1manbetx

打开洛伦兹系统应用

这个示例使用洛伦兹系统的仿真软件模型,创万博1manbetx建一个应用程序在模拟模型的MATLAB®应用程序设计师不同的输入和输出值。了解更多关于如何使用应用程序创建一个应用程序设计师,看看使用应用程序创建并运行一个简单的应用程序设计师。打开应用程序,在MATLAB命令窗口输入以下。

LorenzSystemApp

应用细节

打开LorenzSystemAppmlapp文件。您可以查看编写的代码创建这个应用程序的代码视图部分应用Sesigner。构建这个应用程序的重要组成部分的行为模拟按钮。它具有以下突出的部分:创建SimulationInput使用模拟对象,配置部署,回调读取输出端口数据和情节在每个时间步的数据。这三个函数允许您查看现场模拟的结果在已部署的应用程序。

创建万博1manbetxSimulink.SimulationInput对象

在函数createSimulationInput,定义一个空万博1manbetxSimulink.SimulationInput对象模型。使用这个万博1manbetxSimulink.SimulationInput模拟对象设置回调函数和变量的模型。

模拟使用回调函数注册回调。的万博1manbetxsimulink.compiler.setPostStepFcn注册一个回调函数每次调用模拟步骤。的万博1manbetxsimulink.compiler.setExternalOuputsFcn注册一个回调,动态过程对每一个输出端口的值在根级别的模型模拟。

使用setVariable的方法万博1manbetxSimulink.SimulationInput应用程序对象提供参数值。仿真得到的值编辑字段的应用程序的UI。要部署应用程序,使用万博1manbetxsimulink.compiler.configureForDeployment函数。(注释行代码调用万博1manbetxsimulink.compiler.configureForDeployment函数更快的调试)。

函数simInp = createSimulationInput(应用)%创建一个空SimulationInput对象simInp = 万博1manbetxSimulink.SimulationInput (“LorenzSystemModel”);simInp = 万博1manbetxsimulink.compiler.setSimulationStatusChangeFcn (simInp,@ (simStatus) app.simStatusChangedFcn (simStatus));% PostStepFcn用于更新的阴谋simInp = 万博1manbetxsimulink.compiler.setPostStepFcn (simInp,@ (simTime) app.postStepFcn (simTime),“才”,app.postStepFcnDecimation);%加载ui编辑字段的参数值simInp = simInp.setVariable (的ρ,app.rhoUIC.Value);simInp = simInp.setVariable (“β”,app.betaUIC.Value);simInp = simInp.setVariable (“σ”,app.sigmaUIC.Value);simInp = simInp.setVariable (“x0”,app.x0UIC.Value);simInp = simInp.setVariable (“y0”,app.y0UIC.Value);simInp = simInp.setVariable (“z0”,app.z0UIC.Value);%为部署配置simInpsimInp = 万博1manbetxsimulink.compiler.configureForDeployment (simInp);结束% createSimulationInput

模拟回调函数

模拟回调函数注册回调,让你读值输出端口和写值根输入端口。这些函数注册回调函数在每一个仿真时间步,它允许您查看现场模拟的结果。

postStepFcn回调

postStepFcn每一个仿真步骤后调用回调函数。的时间参数是时间之前的模拟步骤。的postStepFcn函数获取缓存的输出港为每一块值simTime并使用这些值来模拟次情节的缓存值。

函数postStepFcn app.SimTime(应用,simTime)。文本= sprintf (% 0.5克的,simTime);% 0.1234 e + 56wcTime = toc (app.wallClockTimeAtSimStart);app.SimPace。文本= sprintf (' % 7.2 f 'simTime / wcTime);% 1234.56app.adjustPostStepFcnDecimation ();simOut = 万博1manbetxsimulink.compiler.getSimulationOutput (app.modelName);ts = 万博1manbetxsimulink.compiler.internal.extractTimeseriesFromDataset (simOut.yout);十五= [];青年志愿= [];zv = [];= 1:长度(ts) idx =找到(ts {}。时间> = app.simTimeAtLastPostStep);开关ts{其}. name情况下“x”十五= ts{其}. data (idx);情况下“y”青年志愿= ts{其}. data (idx);情况下“z”zv = ts{其}. data (idx);结束结束addpoints (app.hLine、十五、青年志愿,zv);[十五,青年志愿,zv] = getpoints (app.hLine);集(app.hTail,“XData”十五(1)“YData”青年志愿(1),“ZData”,zv (1));集(app.hHead,“XData”十五(结束),“YData”青年志愿(结束),“ZData”zv(结束));drawnowlimitrate;app.simTimeAtLastPostStep = simTime;结束

测试应用程序设计师

在部署应用程序之前,确保应用程序运行在应用程序设计师。点击模拟验证应用程序通过模拟模型为不同的值。

编译应用程序部署

您可以使用应用程序设计师编译和部署应用程序,您还可以使用deploytool函数。更多信息在编译和部署应用程序设计师,看看使用应用程序开发应用程序设计师,网络应用程序应用程序编译器

编译应用程序在这个例子中,使用世纪挑战集团命令之后,应用程序的名称。

mcc - m LorenzSystemApp

另请参阅

||||||||

相关的话题