你Stateflow的操纵®API通过MATLAB对象®变量称为句柄。一旦你有一个手柄API对象,你可以改变对象的属性,调用对象的方法,并添加对象中的新对象。
有几种方法可以得到一个图表中的API对象的句柄。例如,你可以使用找
和向上
方法遍历Stateflow的层次。您也可以拨打sfgco
函数来获取图表中最近选定的对象。
随着找
方法,你要找到API对象指定搜索条件。您可以组合标准,如:
对象的类型
属性或方法的名称
属性名称和值
例如,该命令通过搜索根
宾语RT
并返回每州
名为对象'上'
:
开状态= rt.find('-isa','Stateflow.State','名称','上')
如果有多个对象满足搜索条件,找
返回合格对象的阵列。例如,如果多于一个的图表是开放的,该命令将返回所有的数组图表
对象:
chartArray = rt.find('-isa','Stateflow.Chart')
一旦你有一个手柄API对象,您可以通过Stateflow的层次结构中导航,并发现它包含的对象(其孩子)或包含它的对象(它的亲)。例如,该图中,状态一个
是孩子状态的家长状态A1
和A2
。
为了找到一个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'}
的顺序州
在矢量对象状态
取决于在其中选择状态的顺序。