访问对象在你的Stateflow的图表

你Stateflow的操纵®API通过MATLAB对象®变量称为句柄。一旦你有一个手柄API对象,你可以改变对象的属性,调用对象的方法,并添加对象中的新对象。

有几种方法可以得到一个图表中的API对象的句柄。例如,你可以使用向上方法遍历Stateflow的层次。您也可以拨打sfgco函数来获取图表中最近选定的对象。

查找句柄API对象

随着方法,你要找到API对象指定搜索条件。您可以组合标准,如:

  • 对象的类型

  • 属性或方法的名称

  • 属性名称和值

例如,该命令通过搜索宾语RT并返回每名为对象'上'

开状态= rt.find('-isa''Stateflow.State''名称''上'

如果有多个对象满足搜索条件,返回合格对象的阵列。例如,如果多于一个的图表是开放的,该命令将返回所有的数组图表对象:

chartArray = rt.find('-isa''Stateflow.Chart'

寻找在遏制的不同层次对象

一旦你有一个手柄API对象,您可以通过Stateflow的层次结构中导航,并发现它包含的对象(其孩子)或包含它的对象(它的)。例如,该图中,状态一个是孩子状态的家长状态A1A2

寻子对象

为了找到一个API对象的孩子,请拨打方法。默认情况下,方法在物体内的遏制所有深度找到对象。举例来说,假设CH是一个句柄上例中的图表。调用方法找到所有国家CH返回的句柄到三种状态向量:

状态= ch.find('-isa''Stateflow.State');states.get('名称'
ANS = 3×1单元阵列{ 'A'} { 'A1'} { 'A2'}

要限制搜索的最大深度遏制,使用'-深度'参数作为搜索标准的一部分。例如,找到的唯一的对象在遏制在第一级CH,请输入:

SA = ch.find('-isa''Stateflow.State''-深度',1);sA.Name
ANS = 'A'

同样,要找到所有的国一个,你可以调用这种方法宾语。在这种情况下,搜索包括容纳的第零水平,这是搜索到的对象本身:

状态= sA.find('-isa''Stateflow.State');states.get('名称'
ANS = 3×1单元阵列{ 'A'} { 'A1'} { 'A2'}

要排除的状态一个从搜索结果中,调用功能的MATLABsetdiff

状态= setdiff(州,SA);states.get('名称'
ANS = 2×1单元阵列{ 'A1'} { 'A2'}

查找父对象

为了找到一个API对象的父对象,调用向上方法。该向上方法返回的句柄对象的父容器对象。举例来说,假设SA1是一个句柄状态A1在前面的例子。调用向上在方法SA1返回的句柄状态一个

3 $ = sA1.up;pA1.Name
ANS = 'A'

同样,调用向上在方法3 $返回的句柄图表:

PPA1 = pA1.up;ppA1.Name
ANS = '图表'

检索最近选定的对象

您可以通过调用检索图表中的最近选择的对象sfgco功能。这个函数返回的句柄,或者根据您的选择手柄的载体。

例如,考虑前面的例子中图表。假设你选择状态的过渡A1国家A2。调用sfgco返回句柄相应过渡宾语:

TR = sfgco;海峡= [“过渡,从”tr.Source.Name' 至 'tr.Destination.Name]
STR = '过渡从A1至A2'

同样,如果您同时在图表中选择三种状态,要求sfgco返回句柄的向量为相应的对象。

状态= sfgco;states.get('名称'
ANS = 3×1单元阵列{ 'A'} { 'A1'} { 'A2'}

注意

的顺序在矢量对象状态取决于在其中选择状态的顺序。

也可以看看

|||

相关话题