主要内容

金宝appSimulink.sdi.Signal

接入信号数据和元数据

描述

一种金宝appSimulink.sdi.Signal对象包含模拟数据检查器中的信号的数据和元数据。你可以使用信号对象属性来检查信号元数据,在时间图上可视化信号,并使用金宝appSimulink.sdi.compareSignals函数。

创建

一种金宝appSimulink.sdi.Signal对象为您在模型仿真中登录或导入到仿真数据检查器中的每个信号创建。您可以访问信号对象在仿真数据检查器中的几种方法。一般来说,访问a信号对象,首先需要获取金宝appSimulink.sdi.Run对象,该对象包含信号。

  • 金宝appsimulink.sdi.getSignal.函数返回A.信号对象,该对象与您提供的信号ID相对应。

  • getSignal函数的作用是:返回信号对象指定的指定信号ID运行对象。

  • getSignalByIndex函数的作用是:返回信号对象中指定索引处的运行对象。

属性

全部展开

信号特性

此属性是只读的。

识别信号的唯一编号,返回为整数。仿真数据检查器为每个运行和信号分配唯一数字ID。

此属性是只读的。

包含信号的运行标识符,以整数形式返回。仿真数据检查器为每个运行和信号分配唯一数字ID。

信号的名称,指定为字符向量或字符串。当信号对象包含从模拟中记录的数据,其名称与模型中为信号指定的名称匹配。如果模型没有指定名称,则信号名称是生成信号的块的块路径。

例子:'燃料'

信号的描述,指定为字符向量或字符串。你可以使用描述属性注释信号或识别超出的信号内容的名字.当您将Simscape™数据记录到仿真数据检查器时描述属性将自动为每个节点填充。

此属性是只读的。

存储在磁盘上的信号数据单位,指定为字符向量或字符串。对于模拟模型产生的信号,所述的存储单元信号对象使用模型中指定的单位。当您为没有单位的信号指定显示单位时,使用相同的单元来设置存储的单元。要分析一个使用不同单位的另一个信号,请修改信号的显示单元。仿真数据检查器执行转换以使用显示单元绘制数据。

您可以转换存储单元的信号使用换股公司函数。存储单元转换不支持撤销,可能导致精度损失。金宝app

例子:“g / s”

用于在仿真数据检查器中显示信号数据的单元,指定为字符向量或字符串。信号的显示单元可能不同于反映存储在磁盘上的数据的存储单元。在仿真数据检查器中修改信号显示单元以分析数据。模拟数据检查器中的单元首选项可能会改变记录和导入信号数据的显示单元。有关更多信息,请参见信号显示设备

例子:“米/秒”

此属性是只读的。

信号数据的数据类型,作为字符向量或字符串返回。

例子:'双倍的'

此属性是只读的。

信号数据的复杂性,返回为“真正的”“复杂”

例子:“真正的”

此属性是只读的。

信号采样时间,作为字符向量或标量返回。的值“连续”表示可变步长仿真。

例子:“连续”

例子:“0.1”

此属性是只读的。

产生信号的模型的名称,作为字符向量返回。这模型财产是空的信号包含通过模拟模型而不是产生的数据的对象。

例子:“sldemo_fuelsys”

此属性是只读的。

产生信号的块的块路径,以字符数组的形式返回。这BlockPath属性是不包含模型层次结构的相对路径。这BlockPath财产是空的信号包含通过模拟模型而不是产生的数据的对象。

例子:'sldemo_fuelsys /发动机气体动力学'

此属性是只读的。

产生信号的块的完整块路径,包括完整的模型层次结构,作为字符向量返回。对于参考模型内的信号,FullBlockPath包含完整路径的单元格数组。对其他信号,FullBlockPath与之相同BlockPath.这FullBlockPath财产是空的信号包含通过模拟模型而不是产生的数据的对象。

此属性是只读的。

产生信号的块的名称,作为字符向量返回。这blockname.财产是空的信号包含通过模拟模型而不是产生的数据的对象。

例子:发动机气体动力学的

此属性是只读的。

在产生该信号的块上,连接到该信号的输出端口的索引。这portindex.财产是空的信号包含通过模拟模型而不是产生的数据的对象。

例子:1

此属性是只读的。

信号维数,作为整数或整数数组返回。

例子:(1 2)

此属性是只读的。

矩阵内的信号索引,作为整数阵列返回。

此属性是只读的。

信号中的样本数量,作为整数返回。

信号的时间和数据值,作为a返回timeseries对象的非总线信号或与总线信号的总线层次结构相匹配的结构。

此属性是只读的。

包含信号的高级结构的名称,作为字符向量返回。这RootSource属性仅对导入的信号具有值。

例子:当您导入金宝app仿真软件。SimulationOutput目的sim包含结构Xout., 这RootSource'simout.get('xout')'

此属性是只读的。

到信号时间数据的路径,作为字符向量返回。这倍源属性仅对导入的信号具有值。

例子:当您导入金宝app仿真软件。SimulationOutput目的sim包含结构Xout., 这倍源'simout.get('xout')。时间'

此属性是只读的。

信号样本值的路径,作为字符数组返回。这数据源属性仅对导入的信号具有值。

例子:当您导入金宝app仿真软件。SimulationOutput目的sim包含结构Xout., 这数据源“simOut.get (xout) .signals (1) . values”

此属性是只读的。

由复合信号包含的信号,返回为金宝appSimulink.sdi.Signal对象。这孩子们属性对于标量信号为空。

可视化属性

用于在仿真数据检查器中显示复杂信号数据的复杂格式,指定为以下值之一。您可以修改ComplexFormatA.的财产信号对象更改模拟数据检查器在对象包含复杂信号数据时显示信号数据的方式。

  • “实想”-当绘制信号时,信号的实分量和虚分量一起显示。信号的虚分量用不同的阴影绘制出来线颜色

  • “级”- 当您绘制信号时,信号的幅度显示。

  • “幅度相”-当你绘制信号时,信号的幅度和相位显示在一起。

  • “阶段”—在绘制信号时显示信号的相位。相位是用不同的阴影绘制的线颜色

数据类型:字符|字符串

信号是否被绘制为逻辑值。环境检查一下错误的清除所有子图中的信号。环境检查一下真正的在活动子图上绘制信号。

数据类型:逻辑

绘图中的信号颜色,指定为a1——- - - - - -3.RGB向量之间的值0.1

例子:[0 0.5 0.5]

数据类型:

在仿真数据检查器中显示信号时使用的信号线样式,指定为以下值之一:

  • ' - '——固体

  • ' - '- 虚线

  • “:”——点缀

  • ' - 。'——Dash-dotted

插值方法用于数据可视化和同步步骤的比较,指定为以下值之一:

  • 'ZOH'-零阶保持插值

  • “线性”——线性插值

  • '没有任何'——没有插值

有关插值选项的更多信息,请参见仿真数据检查器如何比较数据

比较性能

在信号比较中使用的绝对容差,指定为正值标量。

仿真数据检查器使用基线信号的信号特性中指定的公差OverrideGlobalTol属性设置为1真正的.有关模拟数据检查器中的公差的更多信息,请参见仿真数据检查器如何比较数据

例子:0.1

数据类型:

在信号比较中使用的相对公差,指定为一个正值标量。相对耐受性用分数乘法器表示。例如,0.1指定10%的容差。

仿真数据检查器使用基线信号的信号特性中指定的公差OverrideGlobalTol属性设置为1真正的.有关模拟数据检查器中的公差的更多信息,请参见仿真数据检查器如何比较数据

例子:0.05

数据类型:

信号比较中使用的信号的时间容差指定为正值标量。以秒为单位指定时间容差。

仿真数据检查器使用基线信号的信号特性中指定的公差OverrideGlobalTol属性设置为1真正的.有关模拟数据检查器中的公差的更多信息,请参见仿真数据检查器如何比较数据

例子:0.1

数据类型:

比较是否使用信号容差值而不是全局公差值,指定为逻辑值。设定OverrideGlobalTol财产1真正的中定义的公差值信号对象属性。设置属性0.错误的使用全局公差值。

有关模拟数据检查器中的公差的更多信息,请参见仿真数据检查器如何比较数据

数据类型:逻辑

方法,用于在比较中同步信号,指定为“联盟”“十字路口”.有关同步选项的详细信息,请参见仿真数据检查器如何比较数据

对象功能

换股公司 转换单位金宝appSimulink.sdi.Signal目的
出口 出口金宝appSimulink.sdi.Signal对象到工作区或文件
Getastall. 创建高时间表金宝appSimulink.sdi.Signal目的
Plotonsubplot. 阴谋金宝appSimulink.sdi.Signal对象在模拟数据检查器子图上

例子

全部折叠

使用模拟数据检查器编程接口,您可以指定用于比较的信号公差值。这个例子使用了slexAircraftExample模型和仿真数据检查器来评估随着控制输入改变低通滤波器的时间常数的影响。

配置模型

加载模型并标记感兴趣的日志记录信号。的日志数据问:α信号。

load_system(“slexAircraftExample”) 金宝appSimulink.sdi.markSignalForStreaming ('Slexaircraftexample / Aircraft Dynamics Model'3,'在') 金宝appSimulink.sdi.markSignalForStreaming ('Slexaircraftexample / Aircraft Dynamics Model',4,'在'

运行模拟

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

OUT1 = SIM(“slexAircraftExample”);modelWorkspace = get_param (“slexAircraftExample”“modelworkspace”);assignin (modelWorkspace'ts',1)OUT2 = SIM(“slexAircraftExample”);

访问和比较仿真结果

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

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

使用金宝appsimulink.sdi.compareruns.函数比较来自模拟的数据。然后检查地位属性,以查看信号是否落在默认公差0内。

diffRun1 = 金宝appSimulink.sdi.compareRuns (runIDTs1 runIDTs2);sig1Result1 = getResultByIndex (diffRun1, 1);sig2Result1 = getResultByIndex (diffRun1 2);sig1Result1。地位
ans = Outoftolerance.
sig2result1.status.
ans = Outoftolerance.

与信号公差进行比较

缺省情况下,使用信号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.name.
Ans = 'alpha, rad'

指定的绝对容忍值0.1和宽度的宽度0.6问:信号使用AbsTolTimeTol属性问:信号对象在基线运行中。

sig1。一种bsTol = 0.1; sig1.TimeTol = 0.6;

指定的绝对容忍值0.2和宽度的宽度0.8α信号使用AbsTolTimeTol属性α信号对象在基线运行中。

sig2。一种bsTol = 0.2; sig2.TimeTol = 0.8;

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

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

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

sig1Result2。地位
ans = WithinTolerance
sig2Result2。地位
ans = WithinTolerance

这个例子展示了如何获取金宝appSimulink.sdi.Signal对象,并使用Simulation Data Inspector编程接口修改其属性。

在模拟数据检查器中创建数据

当您模拟一个记录数据的模型时,将在Simulation data Inspector中创建一个运行以包含记录的数据。您还可以通过导入数据在模拟数据检查器中创建运行。这个例子模拟了slexAircraftExample模型并记录数据数据集格式。

simOut = sim卡(“slexAircraftExample”'saplformat'“数据集”);

得到一个金宝appSimulink.sdi.Signal对象

编程模拟在工作区变量中返回记录的数据sim.您可以访问该变量中的记录数据。但是,要使用Simulation Data Inspector编程接口,您需要访问登录的数据金宝appSimulink.sdi.Run金宝appSimulink.sdi.Signal对象。

首先,使用金宝appSimulink.sdi.getCurrentsImulationRun.得到运行对象时创建的slexAircraftExample模型。

aircraftRun = 金宝appSimulink.sdi.getCurrentSimulationRun (“slexAircraftExample”);

你可以使用getallsignals.函数访问信号对象的所有信号。从返回的数组信号对象,选择第一个信号。

信号= getAllSignals (aircraftRun);sig =信号(1);

修改信号属性

金宝appSimulink.sdi.Signal对象具有指定用于比较和显示信号的选项的属性。指定信号的线条样式和颜色。然后,使用金宝appSimulink.sdi.setSubPlotLayout配置模拟数据检查器以显示单个子图,并使用Plotonsubplot.函数来绘制信号。

sign . lineccolor = [1 0.4 0.6];sig.LineDashed =' - ';金宝appsimulink.sdi.setsubplotlayout(1,1)plotonsubplot(sig,1,1,true)

使用金宝appSimulink.sdi.view功能要打开仿真数据检查器并查看绘图信号。

这个例子使用了slexAircraftExample模型来演示如何比较控制系统的输入和输出信号。

配置和模拟模型

slexAircraftExample模型不记录数据。加载模型并标记输入和输出信号以进行日志记录。

load_system(“slexAircraftExample”) 金宝appSimulink.sdi.markSignalForStreaming ('slexaircraftexample / pilot', 1'在') 金宝appSimulink.sdi.markSignalForStreaming ('Slexaircraftexample / Aircraft Dynamics Model',4,'在'

模拟模型。记录的信号的数据记录到仿真数据检查器和工作空间。

= sim卡(“slexAircraftExample”);

访问仿真数据

使用模拟数据检查器编程接口访问数据。这金宝appSimulink.sdi.Run.getLatest函数返回在Simulation Data Inspector存储库中最近创建的运行。使用getsignalidbyIndex.用于访问记录信号的信号ID的功能。

aircraftRun = 金宝appSimulink.sdi.Run.getLatest;signalID1 = getSignalIDByIndex (aircraftRun, 1);signalID2 = getSignalIDByIndex (aircraftRun 2);

指定公差值

您可以在日志中指定要在比较中使用的容忍值作为属性金宝appSimulink.sdi.Signal对象。使用金宝appsimulink.sdi.getSignal.函数访问信号对象使用信号ID。

signal1 = 金宝appSimulink.sdi.getSignal (signalID1);signal1。AbsTol= 0.1;

比较信号

使用金宝appSimulink.sdi.compareSignals函数比较输入和输出信号。这个例子使用了isValidSignalID函数来验证两个信号id在调用金宝appSimulink.sdi.compareSignals函数。当信号从模拟数据检查器中删除时,信号ID将无效。比较完成后,检查金宝appSimulink.sdi.DiffSignalResult对象。

如果(IsValidSignalid(AirCraftrun,SignalId1)&& IsValidSignalid(AirCraftrun,SignalId2))sigdiff = si金宝appmulink.sdi.comparesignals(SignalID1,SignalID2);匹配= sigdiff.status.结尾
匹配= OutOfTolerance

比较结果超出了容许范围。你可以使用金宝appSimulink.sdi.view功能,检查和分析对比结果。

这个例子演示了如何访问金宝appSimulink.sdi.Run用于通过记录信号创建的模拟数据检查器的对象。来自金宝appSimulink.sdi.Run你可以得到的对象金宝appSimulink.sdi.Signal对象,该对象包含已记录的信号数据和元数据。你可以使用信号对象和Plotonsubplot.函数在仿真数据检查器中绘制数据。

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

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

sim卡(“ex_vdp”);

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

runIDs = 金宝appSimulink.sdi.getAllRunIDs;runid = unrids(结束);

获得运行的运行ID后,就可以使用金宝appsimulink.sdi.getrun.函数来获取金宝appSimulink.sdi.Run对应于运行的对象。你可以使用运行对象检查与运行关联的元数据,包括运行中信号的数量。

vdprun = 金宝appsimulink.sdi.getrun(runid);vdprun.signalcount.
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。检查一下= true; plotOnSubPlot(signal2,2,1,true);

查看绘制的数据

要查看刚刚创建的绘图,请使用仿真数据检查器使用金宝appSimulink.sdi.view函数。

介绍了R2012b