主要内容

金宝appSimulink.sdi.Run

访问运行信号和元数据

描述

金宝appSimulink.sdi.Run对象包含运行元数据,并允许您访问金宝appSimulink.sdi.Signal对象,其中包含运行中信号的数据和元数据。你也可以用a金宝appSimulink.sdi.Run对象将数据从工作区或文件导入到仿真数据检查器中。

创建

模拟数据检查器创建金宝appSimulink.sdi.Run对象时导入数据或模拟记录数据的模型。您可以访问运行对象中的仿真数据检查器中的三种方法:

您还可以通过编程方式创建金宝appSimulink.sdi.Run对象将数据导入到仿真数据检查器。

提示

使用添加函数或金宝appSimulink.sdi.addToRun函数将数据导入空运行对象。

属性

全部展开

此属性是只读的。

运行的唯一数值标识,作为整数返回。

运行名称,指定为字符向量或字符串。

默认情况下,的名字属性时为空金宝appSimulink.sdi.Run.create函数创建运行。

方法时可以指定运行名金宝appSimulink.sdi.createRun函数创建运行。

当您通过模拟记录数据的模型来创建运行时,将根据模拟数据检查器中的运行命名规则生成运行名称。可以在UI中的模拟数据检查器中修改运行命名规则,也可以使用金宝appSimulink.sdi.setRunNamingRule函数。

例子:“运行1:vdp”

运行的描述,指定为字符向量或字符串。默认情况下,描述是空的。使用描述属性添加关于运行中数据重要性的注释,如用于创建数据的测试或模拟条件。

例子:“初始模拟”

标记,用于附加运行信息,指定为字符向量或字符串。默认情况下,标签是空的。您可以使用标签属性附加附加信息运行对象。例如,你可以使用标签属性中创建运行的模拟所用的参数值运行对象的元数据。

例子:'Gain = 2'

创建运行的日期和时间,作为datetime对象。

例子:07 - 12月- 2019 13:55:25

数据类型:datetime

此属性是只读的。

创建运行时,在模拟数据检查器中运行的索引,作为整数返回。的RunIndex当使用运行索引作为运行命名规则的一部分时,匹配运行名称中的运行号。

如果从模拟数据检查器中删除运行,则RunIndex属性返回的向量中运行ID的索引可能不匹配金宝appSimulink.sdi.getAllRunIDs函数。

此属性是只读的。

运行中的信号数,作为整数返回。

用于创建运行的模拟模型的名称,作为字符向量返回。的模型属性为空,用于将数据导入到模拟数据检查器中创建的运行。

在创建运行的模拟中使用的模拟模式,作为字符向量返回。的SimMode属性为空,用于将数据导入到模拟数据检查器中创建的运行。

运行中所有信号共享的第一个时间点,作为标量返回。

运行中所有信号共享的最后时间点,作为标量返回。

Simulink版本金宝app®用于创建运行的模拟,作为字符向量返回。的SLVersion属性为空,用于将数据导入到模拟数据检查器中创建的运行。

为创建运行而模拟的模型的版本,作为字符向量返回。模型的版本存储在它的模型属性中。的ModelVersion属性为空,用于将数据导入到模拟数据检查器中创建的运行。

用于执行创建运行的模拟的系统帐户,作为字符向量返回。的用户标识属性为空,用于将数据导入到模拟数据检查器中创建的运行。

用于执行创建运行的模拟的计算机的名称,作为字符向量返回。的MachineName属性为空,用于将数据导入到模拟数据检查器中创建的运行。

用于执行模拟的机器上的操作系统,作为字符向量返回。的平台属性为空,用于与模拟不对应的运行。

例子:“PCWIN64”

与运行相对应的模拟任务的名称,作为字符向量返回。的TaskName属性为空,除非运行是使用并行计算工具箱™工作程序创建的。

在创建运行的模拟中使用的求解器类型,返回为“变步”“固定的”.的SolverType属性为空,用于将数据导入到模拟数据检查器中创建的运行。

在创建运行的模拟中使用的求解器的名称,作为字符向量返回。的SolverName属性为空,用于将数据导入到模拟数据检查器中创建的运行。

例子:数值

求解器在模拟过程中使用的步长,作为字符向量返回。如果模拟使用固定步长求解器,则SolverStepSize属性指示模拟中使用的固定步长。如果模拟使用变步长求解器,则SolverStepSize属性指示模拟中使用的最大步长。

例子:“0.4”

模拟状态,作为字符向量返回。在运行模拟时,状态属性是“奔跑”.当模拟暂停或完成时,状态属性的值StopEvent的字段金宝app仿真软件。SimulationMetadata对象StopEvent财产。的StopEvent属性具有以下值之一:

  • ReachedStopTime-模拟完成时没有报告错误,不包括报告错误StopFcn回调函数,它在模拟停止后执行。

  • ModelStop-在模拟停止时间之前,一个块或求解器停止了模拟。

  • StopCommand——一个停止按按钮或set_param函数调用结束了模拟。

  • DiagnosticError-一个错误报告结束了模拟。

  • KeyboardControlC——一个Ctrl + C键盘输入结束模拟。

  • PauseCommand——一个暂停按按钮或set_param函数调用暂停模拟。

  • ConditionalPause-一个条件断点暂停了模拟。

  • PauseTime—指定的pause time暂停模拟。

  • StepForward—步进模拟时,模拟在向前步进后暂停。

  • StepBackward—步进模拟时,模拟在后退后暂停。

  • 超时—模拟执行时间超过命令指定的超时时间后,模拟停止“超时”的名称-值对sim卡函数。

块,该块发出停止事件,停止模拟,返回为金宝appSimulink.SimulationData.BlockPath对象。

模拟停止的翻译描述,作为字符向量返回。的StopEventDescription包括对停止事件和相关模拟时间的描述(如果适用)。的StopEventDescription属性的值来自StopEventDescription的字段金宝app仿真软件。SimulationMetadata对象ExecutionInfo财产。

例子:“在时间100时发出暂停命令”

模拟过程中发生的错误,作为字符向量返回。

模拟过程中出现的警告,作为字符向量返回。

为创建运行的模拟初始化模型所需的时间,返回为double。的ModelInitializationTime属性为空,用于将数据导入到模拟数据检查器中创建的运行。

创建运行的模拟的执行时间,作为double返回。的ModelExecutionTime属性为空,用于将数据导入到模拟数据检查器中创建的运行。

是时候终止创建运行并返回为double的模拟了。的ModelTerminationTime属性为空,用于将数据导入到模拟数据检查器中创建的运行。

创建运行的模拟的总模拟时间,返回为double。的ModelTotalElapsedTime属性为空,用于将数据导入到模拟数据检查器中创建的运行。

用户指定的字符串,对应于模拟,作为字符向量返回。通常,UserString提供模拟的简要描述。指定UserString的模拟金宝app仿真软件。SimulationInput对象进行模拟。

对象的功能

添加 添加信号到金宝appSimulink.sdi.Run对象
出口 导出运行到基本工作区或文件
getAllSignalIDs 获取所有信号的信号id金宝appSimulink.sdi.Run对象
getAllSignals 接收所有信号金宝appSimulink.sdi.Run对象
getDatasetRef 为运行创建一个Si金宝appmulink.sdi.DatasetRef对象
getSignalByIndex 接收信号金宝appSimulink.sdi.Run对象(按索引)
getSignalIDByIndex 获取指定索引中的信号的信号ID金宝appSimulink.sdi.Run对象
getSignalIDsByName 获取内部信号的信号id金宝appSimulink.sdi.Run使用信号名的对象
getSignalsByName 接入信号金宝appSimulink.sdi.Run使用信号名的对象
isValidSignalID 检查信号ID是否与in对应金宝appSimulink.sdi.Run对象

例子

全部折叠

该示例演示如何访问金宝appSimulink.sdi.Run对象,用于由日志记录信号创建的运行模拟数据检查器。从金宝appSimulink.sdi.Run你可以得到的对象金宝appSimulink.sdi.Signal对象,其中包含记录的信号数据和元数据。您可以使用信号对象和plotOnSubPlot函数在模拟数据检查器中绘制数据。

创建模拟运行并访问运行对象

ex_vdp模型记录两个信号。要创建包含日志数据的模拟运行,请模拟模型。

sim卡(“ex_vdp”);

模拟数据检查器通过为模拟创建的每个运行分配唯一的数值运行ID、导入数据或打开会话来跟踪运行。要访问刚刚执行的模拟的运行对象,请使用金宝appSimulink.sdi.getAllRunIDs函数,并取返回向量中的最后一个运行ID。

runIDs = 金宝appSimulink.sdi.getAllRunIDs;runID = runIDs(end);

有了运行的运行ID之后,就可以使用金宝appSimulink.sdi.getRun函数来获取金宝appSimulink.sdi.Run对象对应于运行。您可以使用运行对象来检查与运行相关的元数据,包括运行中的信号数量。

vdpRun = 金宝appSimulink.sdi.getRun(runID);vdpRun。信号Count
ans =int322

绘图数据使用信号对象

使用getSignalByIndex的函数访问信号运行对象,fuelRun

signal1 = getSignalByIndex(vdpRun,1);signal2 = getSignalByIndex(vdpRun,2);

使用金宝appSimulink.sdi.setSubPlotLayout函数指定一个3乘1的布局。

金宝appSimulink.sdi.setSubPlotLayout (2, 1)

在绘制数据之前,请使用金宝appSimulink.sdi.clearAllSubPlots函数清除已绘制的任何数据。

金宝appSimulink.sdi.clearAllSubPlots

在每个副图上画一个信号。若要在第一个子图上绘制信号,可以设置检查属性。若要在第一个子图以外的子图上绘制信号,请使用plotOnSubPlot函数。

signal1。Checked = true;plotOnSubPlot (signal2 2 1,真实);

查看绘制数据

要查看您刚刚创建的图,请使用金宝appSimulink.sdi.view函数。

此示例演示如何创建运行,向其添加数据,然后在仿真数据检查器中查看数据。

为运行创建数据

创建timeseries对象,以包含正弦信号和余弦信号的数据。给每个timeseries对象的描述性名称。

时间= linspace(0,20,100);sinine_vals = sin(2*pi/5*time);Sine_ts =时间序列(sine_vals,time);sine_ts。Name =“sin, T = 5”;Cos_vals = cos(2*pi/8*time);Cos_ts =时间序列(cos_vals,time);cos_ts。Name =“余弦,T = 8”

创建运行并添加数据

使用金宝appSimulink.sdi.view函数来打开模拟数据检查器。

金宝appSimulink.sdi.view

要从工作区将数据导入到仿真数据检查器中,请创建一个金宝appSimulink.sdi.Run对象使用金宝appSimulink.sdi.Run.create函数。方法将有关运行的信息添加到元数据中的名字而且描述的属性运行对象。

sinusoidsRun = 金宝appSimulink.sdi.Run.create;sinusoidsRun。Name =正弦曲线的;sinusoidsRun。描述=“不同频率的正弦和余弦信号”

使用添加函数将在工作空间中创建的数据添加到空运行。

添加(sinusoidsRun“var”、sine_ts cos_ts);

在模拟数据检查器中绘制数据

使用getSignalByIndex访问功能金宝appSimulink.sdi.Signal对象,其中包含信号数据。您可以使用金宝appSimulink.sdi.Signal对象属性,以指定信号的线样式和颜色,并在仿真数据检查器中绘制它。指定LineColor而且LineDashed每个信号的属性。

sinine_sig = getSignalByIndex(sinusoidsRun,1);sine_sig。LineColor = [0 0 1];sine_sig。LineDashed =“-”。;cos_sig = sinusoidsRun.getSignalByIndex(2);cos_sig。LineColor = [0 1 0];cos_sig。LineDashed =“——”

使用金宝appSimulink.sdi.setSubPlotLayout命令,配置。2——- - - - - -1模拟数据检查器绘图区域中的子图布局。然后使用plotOnSubplot函数在顶部子图上绘制正弦信号,在底部子图上绘制余弦信号。

金宝appSimulink.sdi.setSubPlotLayout (2, 1);plotOnSubPlot (sine_sig 1 1,真实);plotOnSubPlot (cos_sig 2 1,真实);

关闭模拟数据检查器并保存数据

在完成对绘制的信号数据的检查后,可以关闭仿真数据检查器并将会话保存到MLDATX文件中。

金宝appSimulink.sdi.close (“sinusoids.mldatx”

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

设置

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

%确保模拟数据检查器为空,并且PCT支持为金宝app%启用。金宝appSimulink.sdi.clear Simulink.sdi.enab金宝applePCTSupport (“本地”定义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”) 金宝appSimulink.sdi.markSignalForStreaming (“slexAircraftExample /试点”, 1“上”) 金宝appSimulink.sdi.markSignalForStreaming ('slexAircraftExample/飞机动力学模型'4“上”在每个worker上创建临时目录workDir = pwd;addpath(workDir) tempDir = tempname;mkdir (tempDir) cd (tempDir)结束

运行并行模拟

使用parfor同时进行七个模拟。为Ts对于每次模拟,并修改值Ts在模型工作区中。然后,运行模拟并构建一个数组金宝appSimulink.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) = 金宝appSimulink.sdi.WorkerRun.getLatest结束spmd%删除临时目录cd (workDir)删除文件夹(tempDir,“年代”) rmpath (workDir)结束

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

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

ds(7) = 金宝appSimulink.SimulationData.Dataset;a = 1:7 ds(a) = workerRun(a).getDataset;结束ds (1)
ans Bl金宝appockPath = 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。金宝app执行]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)。Name =strcat('slexAircraftExample run Ts=', Ts_val_str);结束

清理工作者存储库

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

金宝appSimulink.sdi.cleanupWorkerResources

选择

您可以使用模拟数据检查器UI查看运行元数据并导入数据。有关更多信息,请参见在仿真数据检查器中查看数据

在R2012b中介绍