主要内容

金宝appSimulink.sdi.getAllRunIDs

获取所有模拟数据检查器运行标识符

描述

例子

runIDs= 金宝appSimulink.sdi.getAllRunIDs返回模拟数据检查器存储库中所有运行的运行标识符的矩阵。

例子

全部折叠

使用“模拟数据检查器”编程接口执行的许多任务都是从获取模拟运行的运行ID开始的。这个例子说明了获取运行ID的几种方法。可以使用运行ID访问金宝appSimulink.sdi.Run对象,该对象包含运行数据和元数据,并使用金宝appSimulink.sdi.compareRuns函数。

创建一个运行

该模型sldemo_fuelsys已为日志记录配置。当您模拟模型时,仿真数据检查器会自动创建一个运行并为其分配一个运行ID。

load_system (“sldemo_fuelsys”) sim卡(“sldemo_fuelsys”

使用获取运行ID金宝appSimulink.sdi.getAllRunIDs

金宝appSimulink.sdi.getAllRunIDs函数返回一个数组,其中包含模拟数据检查器存储库中运行的所有运行id,按顺序,最近创建的运行位于最后。

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

使用获取运行ID金宝appSimulink.sdi.getRunIDByIndex

你也可以使用金宝appSimulink.sdi.getRunCount而且金宝appSimulink.sdi.getRunIDByIndex函数获取运行的运行ID。如果您也想使用此方法,则此方法非常有用作为一个计数变量,以索引模拟数据检查器存储库中的运行。

count = 金宝appSimulink.sdi.getRunCount;runID = 金宝appSimulink.sdi.getRunIDByIndex(count);

获取运行ID金宝appSimulink.sdi.Run对象

方法获取运行ID金宝appSimulink.sdi.Run对象,该对象与运行对应。本例使用金宝appSimulink.sdi.getCurrentSimulationRun函数来获取运行对象的最新模拟对应的sldemo_fuelsys模型。你也可以使用金宝appSimulink.sdi.Run.getLatest函数访问最近创建的运行对象。

fuelsysRun = 金宝appSimulink.sdi.getCurrentSimulationRun(“sldemo_fuelsys”);runID = fuelsysRun.ID;

使用“模拟数据检查器”编程接口,可以指定要在比较中使用的信号容差值。本例使用slexAircraftExample模型和仿真数据检查器,以评估在控制输入之后改变低通滤波器的时间常数的效果。

配置模型

加载模型并标记感兴趣的信号以进行日志记录。的日志数据而且α信号。

load_system (“slexAircraftExample”) 金宝appSimulink.sdi.markSignalForStreaming ('slexAircraftExample/飞机动力学模型',3,“上”) 金宝appSimulink.sdi.markSignalForStreaming ('slexAircraftExample/飞机动力学模型'4“上”

运行模拟

使用不同的低通滤波器时间常数运行模拟以生成结果进行比较。的slexAircraftExample模型在模型工作区中存储与模型相关的变量。要修改时间常数值,请访问模型工作区并使用assignin函数。

Out1 = sim(“slexAircraftExample”);modelWorkspace = get_param(“slexAircraftExample”“modelworkspace”);assignin (modelWorkspace“t”,1) out2 = sim(“slexAircraftExample”);

访问和比较仿真结果

使用“仿真数据检查器”编程接口访问仿真结果。每个模拟在模拟数据检查器中创建一个具有唯一运行ID的运行。您可以使用运行id来比较模拟结果。

runIDs = 金宝appSimulink.sdi.getAllRunIDs;runIDTs1 = runIDs(end-1);runIDTs2 = runIDs(end);

使用金宝appSimulink.sdi.compareRuns函数比较来自模拟的数据。然后检查状态属性,以查看信号是否落在默认容差为0的范围内。

diffRun1 = 金宝appSimulink.sdi.compareRuns(runIDTs1,runIDTs2);sig1Result1 = getResultByIndex(diffRun1,1);sig2Result1 = getResultByIndex(diffRun1,2);sig1Result1。状态
ans = out toftolerance
sig2Result1。状态
ans = out toftolerance

比较运行与信号公差

默认情况下,使用信号0对于所有公差值,因此当信号不相同时,比较返回超出公差的结果。为了进一步分析时间常数变化的影响,指定信号的容差值。属性的属性指定编程比较的公差金宝appSimulink.sdi.Signal您比较的运行中的对象。比较使用为基线指定的公差信号对象。这个例子指定了时间公差和绝对公差的组合。

要指定公差,首先访问金宝appSimulink.sdi.Signal与要比较的运行中的每个信号对应的对象。

run1 = 金宝appSimulink.sdi.getRun(runIDTs1);sigID1 = getSignalIDByIndex(run1,1);sigID2 = getSignalIDByIndex(run1,2);sig1 = 金宝appSimulink.sdi.getSignal(sigID1);sig2 = 金宝appSimulink.sdi.getSignal(sigID2);

检查的名字属性来标识每个信号对象。

sig1。的名字
Ans = 'q, rad/sec'
sig2。的名字
Ans = 'alpha, rad'

指定的绝对公差0.1和时间的容忍度0.6信号使用AbsTol而且TimeTol的属性基线运行中的信号对象。

sig1。AbsTol = 0.1;sig1。TimeTol = 0.6;

指定的绝对公差0.2和时间的容忍度0.8α信号使用AbsTol而且TimeTol的属性α基线运行中的信号对象。

sig2。AbsTol = 0.2;sig2。TimeTol = 0.8;

再次比较运行并访问结果。

diffRun2 = 金宝appSimulink.sdi.compareRuns(runIDTs1,runIDTs2);sig1Result2 = getResultByIndex(diffRun2,1);sig2Result2 = getResultByIndex(diffRun2,2);

检查状态属性,以确定比较结果是否落在规定的公差范围内。

sig1Result2。状态
不宽容
sig2Result2。状态
不宽容

输出参数

全部折叠

模拟数据检查器存储库中的运行id矩阵。

在R2017a中引入