接入信号数据和元数据
一种金宝appSimulink.sdi.Signal
对象包含模拟数据检查器中的信号的数据和元数据。你可以使用信号
对象属性来检查信号元数据,在时间图上可视化信号,并使用金宝appSimulink.sdi.compareSignals
函数。
一种金宝appSimulink.sdi.Signal
对象为您在模型仿真中登录或导入到仿真数据检查器中的每个信号创建。您可以访问信号
对象在仿真数据检查器中的几种方法。一般来说,访问a信号
对象,首先需要获取金宝appSimulink.sdi.Run
对象,该对象包含信号。
这金宝appsimulink.sdi.getSignal.
函数返回A.信号
对象,该对象与您提供的信号ID相对应。
这getSignal
函数的作用是:返回信号
对象指定的指定信号ID运行
对象。
这getSignalByIndex
函数的作用是:返回信号
对象中指定索引处的运行
对象。
ID
-信号标识符此属性是只读的。
识别信号的唯一编号,返回为整数。仿真数据检查器为每个运行和信号分配唯一数字ID。
run
-运行标识符此属性是只读的。
包含信号的运行标识符,以整数形式返回。仿真数据检查器为每个运行和信号分配唯一数字ID。
的名字
-信号名称信号的名称,指定为字符向量或字符串。当信号
对象包含从模拟中记录的数据,其名称与模型中为信号指定的名称匹配。如果模型没有指定名称,则信号名称是生成信号的块的块路径。
例子:'燃料'
描述
-信号描述''
(默认)|特征向量|字符串信号的描述,指定为字符向量或字符串。你可以使用描述
属性注释信号或识别超出的信号内容的名字
.当您将Simscape™数据记录到仿真数据检查器时描述
属性将自动为每个节点填充。
存储单元
-存储在磁盘上的信号数据单元此属性是只读的。
存储在磁盘上的信号数据单位,指定为字符向量或字符串。对于模拟模型产生的信号,所述的存储单元信号
对象使用模型中指定的单位。当您为没有单位的信号指定显示单位时,使用相同的单元来设置存储的单元。要分析一个使用不同单位的另一个信号,请修改信号的显示单元。仿真数据检查器执行转换以使用显示单元绘制数据。
您可以转换存储单元的信号使用换股公司
函数。存储单元转换不支持撤销,可能导致精度损失。金宝app
例子:“g / s”
显示单位
-用于在仿真数据检查器中显示信号数据的单元用于在仿真数据检查器中显示信号数据的单元,指定为字符向量或字符串。信号的显示单元可能不同于反映存储在磁盘上的数据的存储单元。在仿真数据检查器中修改信号显示单元以分析数据。模拟数据检查器中的单元首选项可能会改变记录和导入信号数据的显示单元。有关更多信息,请参见信号显示设备.
例子:“米/秒”
数据类型
-信号数据的数据类型此属性是只读的。
信号数据的数据类型,作为字符向量或字符串返回。
例子:'双倍的'
复杂
-信号数据的复杂性“真正的”
|“复杂”
此属性是只读的。
信号数据的复杂性,返回为“真正的”
或“复杂”
.
例子:“真正的”
采样时间
-信号采样时间此属性是只读的。
信号采样时间,作为字符向量或标量返回。的值“连续”
表示可变步长仿真。
例子:“连续”
例子:“0.1”
模型
-产生信号的模型名称此属性是只读的。
产生信号的模型的名称,作为字符向量返回。这模型
财产是空的信号
包含通过模拟模型而不是产生的数据的对象。
例子:“sldemo_fuelsys”
BlockPath
-产生信号的块的块路径此属性是只读的。
产生信号的块的块路径,以字符数组的形式返回。这BlockPath
属性是不包含模型层次结构的相对路径。这BlockPath
财产是空的信号
包含通过模拟模型而不是产生的数据的对象。
例子:'sldemo_fuelsys /发动机气体动力学'
FullBlockPath
-产生信号的块的完整块路径此属性是只读的。
产生信号的块的完整块路径,包括完整的模型层次结构,作为字符向量返回。对于参考模型内的信号,FullBlockPath
包含完整路径的单元格数组。对其他信号,FullBlockPath
与之相同BlockPath
.这FullBlockPath
财产是空的信号
包含通过模拟模型而不是产生的数据的对象。
blockname.
-产生信号的块的名称此属性是只读的。
产生信号的块的名称,作为字符向量返回。这blockname.
财产是空的信号
包含通过模拟模型而不是产生的数据的对象。
例子:发动机气体动力学的
portindex.
-阻塞端口索引此属性是只读的。
在产生该信号的块上,连接到该信号的输出端口的索引。这portindex.
财产是空的信号
包含通过模拟模型而不是产生的数据的对象。
例子:1
方面
-信号尺寸此属性是只读的。
信号维数,作为整数或整数数组返回。
例子:(1 2)
通道
-矩阵内的信号索引此属性是只读的。
矩阵内的信号索引,作为整数阵列返回。
数字
-信号中的样本数量此属性是只读的。
信号中的样本数量,作为整数返回。
价值
-信号值timeseries
|结构信号的时间和数据值,作为a返回timeseries
对象的非总线信号或与总线信号的总线层次结构相匹配的结构。
RootSource
-包含导入信号的高级结构此属性是只读的。
包含信号的高级结构的名称,作为字符向量返回。这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
向量此属性是只读的。
由复合信号包含的信号,返回为金宝appSimulink.sdi.Signal
对象。这孩子们
属性对于标量信号为空。
ComplexFormat
-复杂信号的显示格式“实想”
|“级”
|“幅度相”
|“阶段”
用于在仿真数据检查器中显示复杂信号数据的复杂格式,指定为以下值之一。您可以修改ComplexFormat
A.的财产信号
对象更改模拟数据检查器在对象包含复杂信号数据时显示信号数据的方式。
“实想”
-当绘制信号时,信号的实分量和虚分量一起显示。信号的虚分量用不同的阴影绘制出来线颜色.
“级”
- 当您绘制信号时,信号的幅度显示。
“幅度相”
-当你绘制信号时,信号的幅度和相位显示在一起。
“阶段”
—在绘制信号时显示信号的相位。相位是用不同的阴影绘制的线颜色.
数据类型:字符
|字符串
检查一下
-是否绘制信号0.
或错误的
(默认)|1
或真正的
信号是否被绘制为逻辑值。环境检查一下
来错误的
清除所有子图中的信号。环境检查一下
来真正的
在活动子图上绘制信号。
数据类型:逻辑
LineColor
-信号线颜色1
——- - - - - -3.
向量绘图中的信号颜色,指定为a1
——- - - - - -3.
RGB向量之间的值0.
和1
.
例子:[0 0.5 0.5]
数据类型:双
LineDashed
-信号线的风格' - '
|' - '
|“:”
|' - 。'
在仿真数据检查器中显示信号时使用的信号线样式,指定为以下值之一:
' - '
——固体
' - '
- 虚线
“:”
——点缀
' - 。'
——Dash-dotted
InterpMethod
-插值方法“线性”
(默认)|'ZOH'
|'没有任何'
AbsTol
-绝对的宽容0.
(默认)|标量在信号比较中使用的绝对容差,指定为正值标量。
仿真数据检查器使用基线信号的信号特性中指定的公差OverrideGlobalTol
属性设置为1
或真正的
.有关模拟数据检查器中的公差的更多信息,请参见仿真数据检查器如何比较数据.
例子:0.1
数据类型:双
RelTol
-相对宽容0.
(默认)|标量在信号比较中使用的相对公差,指定为一个正值标量。相对耐受性用分数乘法器表示。例如,0.1
指定10%的容差。
仿真数据检查器使用基线信号的信号特性中指定的公差OverrideGlobalTol
属性设置为1
或真正的
.有关模拟数据检查器中的公差的更多信息,请参见仿真数据检查器如何比较数据.
例子:0.05
数据类型:双
TimeTol
-时间的宽容0.
(默认)|标量信号比较中使用的信号的时间容差指定为正值标量。以秒为单位指定时间容差。
仿真数据检查器使用基线信号的信号特性中指定的公差OverrideGlobalTol
属性设置为1
或真正的
.有关模拟数据检查器中的公差的更多信息,请参见仿真数据检查器如何比较数据.
例子:0.1
数据类型:双
OverrideGlobalTol
-比较是否使用信号公差0.
或错误的
(默认)|1
或真正的
比较是否使用信号容差值而不是全局公差值,指定为逻辑值。设定OverrideGlobalTol
财产1
或真正的
中定义的公差值信号
对象属性。设置属性0.
或错误的
使用全局公差值。
有关模拟数据检查器中的公差的更多信息,请参见仿真数据检查器如何比较数据.
数据类型:逻辑
SyncMethod
-同步方法“联盟”
(默认)|“十字路口”
方法,用于在比较中同步信号,指定为“联盟”
或“十字路口”
.有关同步选项的详细信息,请参见仿真数据检查器如何比较数据.
换股公司 |
转换单位金宝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
为问:
信号使用AbsTol
和TimeTol
属性问:
信号对象在基线运行中。
sig1。一种bsTol = 0.1; sig1.TimeTol = 0.6;
指定的绝对容忍值0.2
和宽度的宽度0.8
为α
信号使用AbsTol
和TimeTol
属性α
信号对象在基线运行中。
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
函数。
getSignal
|getSignalByIndex
|getsignalidbyIndex.
|金宝appSimulink.sdi.createRun
|金宝appsimulink.sdi.getSignal.
|金宝appSimulink.sdi.Run
您单击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。