主要内容

getLocalRun

类:万博1manbetxSimulink.sdi.WorkerRun
包:万博1manbetxSimulink.sdi

从工作运行创建本地运行

语法

runObj = workerRun.getLocalRun

描述

runObj= workerRun.getLocalRun创建本地万博1manbetxSimulink.sdi.Run对象runObj万博1manbetxSimulink.sdi.WorkerRun对象workerRun.使用getLocalRun在客户端MATLAB中®访问万博1manbetxSimulink.sdi.WorkerRun数据。

输出参数

全部展开

当地的万博1manbetxSimulink.sdi.Run对象。

例子

全部展开

此示例执行模型的并行模拟slexAircraftExample使用不同的输入过滤器时间常数,并展示了使用模拟数据检查器编程接口访问数据的几种方法。

设置

首先确保仿真数据检查器为空,并配置并行计算工具箱支持以自动导入在本地工作者上创建的运行。万博1manbetx然后,创建一个用于每个模拟的过滤器参数值向量。

%确保模拟数据检查器为空,并且PCT支持为万博1manbetx%启用。万博1manbetxSimulink.sdi.clear Simulink.sdi万博1manbetx.enablePCTSupport (“本地”定义Ts值Ts_vals = [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1];

初始化并行工作器

如果您还没有一个本地工作人员池,那么使用gcp创建一个本地工作人员池来运行并行模拟。在一个spmd代码块,加载slexAircraftExample建模并选择要记录的信号。避免数据并发问题使用sim卡parfor,为每个工作人员创建一个临时目录,在模拟过程中使用。

P = gcp;
使用“本地”配置文件启动并行池(parpool)…连接4个工人。
spmd加载系统并选择要记录的信号load_system (“slexAircraftExample”) 万博1manbetxSimulink.sdi.markSignalForStreaming (“slexAircraftExample /试点”, 1“上”) 万博1manbetxSimulink.sdi.markSignalForStreaming ('slexAircraftExample/飞机动力学模型'4“上”在每个worker上创建临时目录workDir = pwd;addpath(workDir) tempDir = tempname;mkdir (tempDir) cd (tempDir)结束

运行并行模拟

使用parfor同时进行七个模拟。为Ts对于每次模拟,并修改值Ts在模型工作区中。然后,运行模拟并构建一个数组万博1manbetxSimulink.sdi.WorkerRun对象来使用仿真数据检查器访问数据。后parfor循环,使用另一个spmd段从工作者中删除临时目录。

parfor指数= 1:7选择Ts的值Ts_val = Ts_vals(索引);更改过滤器时间常数并进行模拟modelWorkspace = get_param(“slexAircraftExample”“modelworkspace”);modelWorkspace.assignin (“t”Ts_val) sim卡(“slexAircraftExample”为每个模拟创建一个工作运行。workerRun(index) = 万博1manbetxSimulink.sdi.WorkerRun.getLatest结束spmd%删除临时目录cd (workDir)删除文件夹(tempDir,“年代”) rmpath (workDir)结束

从并行模拟输出中获取数据集对象

getDataset方法将数据放入WorkerRun成一个数据集对象,以便您可以轻松地进行后处理。

ds(7) = 万博1manbetxSimulink.SimulationData.Dataset;a = 1:7 ds(a) = workerRun(a).getDataset;结束ds (1)
ans Bl万博1manbetxockPath = Simulink.SimulationData.Dataset”2元素名称  __________ ________________________________________ 1 (1 x1信号)α,rad……rcraftExample/Aircraft Dynamics Model 2 [1x1 Signal] Stick slexAircraftExample/Pilot -使用括号{}访问,修改,或使用索引添加元素。

从并行仿真输出中获取DatasetRef对象

对于大数据工作流,请使用getDatasetRef方法引用与WorkerRun

b = 1:7 datasetRef(b) = workerRun(b).getDatasetRef;结束datasetRef (1)
“运行3:slexAircraftExample”运行:[1×1 Simulink.sdi. ans = datastref。万博1manbetx执行]numElements: 2

在仿真数据检查器中处理并行仿真数据

您也可以创建本地运行对象来分析和可视化您的数据,使用模拟数据检查器API。此示例添加一个标记,指示每次运行的过滤器时间常量值。

c = 1:7 Runs(c) = workerRun(c).getLocalRun;Ts_val_str = num2str(Ts_vals(c));Desc = strcat('Ts = ', Ts_val_str);(c)。Description = desc;(c)。名称= strcat('slexAircraftExample run Ts=', Ts_val_str);结束

清理工作者存储库

清理工作人员使用的文件,为希望在工作人员池上运行的其他模拟释放磁盘空间。

万博1manbetxSimulink.sdi.cleanupWorkerResources

版本历史

在R2017b中引入