主要内容

创建响应应用程序在后台运行计算

这一主题展示了如何让一个应用程序使用背景池反应更迅速。通常,MATLAB®中止执行的运行时计算。而MATLAB是暂停,你不能打断应用程序。让你的应用程序的响应,使用背景池运行在后台计算。MATLAB计算在后台运行时,应用程序可以立即回复用户界面交互。

如果你想修改一个现有的应用程序在后台运行的代码,看看响应应用程序计算和情节简单的曲线

在这个话题,你:

  • 打开一个现有应用程序在后台不运行任何代码。

  • 修改一个函数允许应用程序在后台运行代码。

  • 写一个函数代码完成后自动更新一个阴谋在后台运行。

  • 修改现有的回调函数允许应用程序立即回复用户界面交互和中断计算。

打开应用程序设计应用

在这个例子中使用的应用程序允许您选择一个函数,然后计算和绘制y设在根据内置的数据x设在数据。

运行这个命令打开的工作副本PlotCurve应用程序。

openExample (“matlab / PlotCurveAppExample”)

使用这个应用程序作为一个起点你修改和重组程序代码。应用程序有五个功能:

  • getFunction——使用价值从下拉fcnDropDown选择一个函数fcn。自定义函数可以作为支持文件使用万博1manbetx暂停(rand)模拟一个非凡的计算。

  • createData——使用getFunction得到一个函数fcn,然后使用该函数来计算y = fcn (x)在迭代循环。的循环中止MATLAB执行,直到完成为止。

  • updatePlot——更新为代表的阴谋app.UIAxes与每个y设在计算后的数据点。

  • clearPlot——明确的情节。

  • toggleButtons——使之间切换开始按钮或停止按钮。

通过选择编辑代码代码视图在应用程序设计器窗口。

添加一个未来数组的属性

当你在后台运行一个函数时,您创建一个未来对象。你可以获取的输出未来对象使用fetchOutputs

让你的应用程序响应,需要存储所有的未来这个应用程序创建对象。然后,您可以使用取消停止时的计算在后台运行程序的用户点击停止按钮或使用下拉fcnDropDown

存储未来应用程序创建对象,您必须添加一个私有财产中的应用。应用程序设计师将来发布,点击财产>私有财产,然后名称属性F

属性(访问=私人)h%线对象X%轴数据F%期货计算结束

创建y设在在后台数据

createData函数创建y设在当用户点击应用程序的数据开始按钮。编辑函数来计算y设在在后台数据。

  1. 使用parfeval(并行计算工具箱)backgroundPool运行函数fcn在后台。在每个迭代中循环,存储每个未来数组中f

  2. 存储阵列的未来F应用程序的属性。

  3. 使用afterEach运行一个函数onFutureDone的每个元素后,更新一个阴谋app.F完成。指定PassFuture作为真正的运行函数使用未来元素。

  4. 使用毕竟之间的切换开始停止按钮后,MATLAB完成计算的所有y设在数据。

函数createData(应用)%创建数据的x轴和y轴。%更新一个阴谋而被创造出来的数据。%得到函数fcn = app.getFunction;%轴数据app.X = 5 * 1:10 0;%轴数据i = 1:元素个数(app.X)在后台运行fcn % (x)f (i) = parfeval (backgroundPool fcn 1, app.X(我));结束%未来存储阵列app.F = f;%每个未来完成后更新情节afterEach (app.F @app.onFutureDone, 0, PassFuture = true);%完成切换按钮毕竟未来的对象毕竟(app.F @ app.toggleButtons (~), 0);结束

自动更新的阴谋后在后台数据计算

创建一个新的函数后自动更新情节未来完成。

  1. 在应用程序设计师将来发布,点击函数>私有函数,那么函数的名字onFutureDone

  2. 如果未来对象完成了一个错误,立即从函数返回。

  3. 如果未来对象与一个错误,没有完成使用ID的属性f找到元素的索引f数组中app.F。的索引未来对象f必须匹配的索引x设在数据点。

  4. 更新阴谋的结果f和匹配x设在点的数据,使用索引idx

函数onFutureDone (app, f)%不更新情节如果有一个错误如果~ isempty (f.Error)返回结束%找到未来的指数(app.F idx = (。ID] = = f.ID);%更新阴谋使用结果app.updatePlot (fetchOutputs (f)、idx);结束

让您的应用程序响应更及时取消未来数组

让您的应用程序响应更及时、编辑取消回调未来数组app.F后:

  • 使用下拉更改的值fcnDropDown

    函数fcnDropDownValueChanged(应用程序、事件)%停止期货如果~ isempty (app.F)取消(app.F)结束app.clearPlot如果app.StartButton。启用= = false app.createData结束结束
  • 推动停止按钮。

    函数StopButtonPushed(应用程序、事件)%停止期货如果~ isempty (app.F)取消(app.F)结束app.toggleButtons结束
  • 请求应用程序关闭。

    函数UIFigureCloseRequest(应用程序、事件)%停止期货如果~ isempty (app.F)取消(app.F)结束删除(应用)结束

响应应用程序计算和情节简单的曲线

这个例子显示了一个应用程序计算和情节简单的曲线。你可以选择一个函数图,然后这个函数。应用程序使用循环计算y设在在后台数据。MATLAB不暂停执行而计算数据,因此你能够阻止应用程序或更新的绘图类型数据时计算。

运行PlotCurveBackground应用程序通过单击运行按钮在程序设计师。

另请参阅

||

相关的话题