Stateflow.State
R2026b图、状态或框中的状态
描述
使用 Stateflow.State 对象描述反应式系统的工作模式。有关详细信息,请参阅通过使用状态来表示工作模式。
创建对象
输入参量
属性
Stateflow API 对象具有与您在 Stateflow 编辑器中设置的值对应的属性。要访问或修改属性,请使用圆点表示法。要访问或修改多个 API 对象的多个属性,请分别使用 get 和 set 函数。有关详细信息,请参阅Modify Properties and Call Functions of Stateflow Objects。
内容
状态的名称,指定为字符串标量或字符向量。
状态的标签,指定为字符串标量或字符向量。有关详细信息,请参阅Specify Labels in States and Transitions Programmatically。
此 属性 为只读。
状态 during 动作,指定为字符向量。此属性的值取决于状态的 LabelString 属性。有关详细信息,请参阅Specify Labels in States and Transitions Programmatically。摩尔图中不支持此属性。
此 属性 为只读。
状态 entry 动作,指定为字符向量。此属性的值取决于状态的 LabelString 属性。有关详细信息,请参阅Specify Labels in States and Transitions Programmatically。摩尔图中不支持此属性。
此 属性 为只读。
状态 exit 动作,指定为字符向量。此属性的值取决于状态的 LabelString 属性。有关详细信息,请参阅Specify Labels in States and Transitions Programmatically。摩尔图中不支持此属性。
此 属性 为只读。
摩尔图中的状态动作,指定为字符向量。此属性的值取决于状态的 LabelString 属性。有关详细信息,请参阅Specify Labels in States and Transitions Programmatically。此属性仅在摩尔图中受支持。有关详细信息,请参阅Design Guidelines for Moore Charts。
此 属性 为只读。
状态 on 动作,指定为以下形式的字符向量元胞数组:
{'trigger1','action1',...,'triggerN','actionN'}此属性的值取决于状态的 LabelString 属性。有关详细信息,请参阅Specify Labels in States and Transitions Programmatically。摩尔图中不支持此属性。
是否注释掉状态,指定为数值或逻辑值 1 (true) 或 0 (false)。将此属性设置为 true 等效于右键点击状态并选择注释掉。有关详细信息,请参阅Comment Out Objects in a Stateflow Chart。
此 属性 为只读。
状态是否隐式被注释掉,指定为数值或逻辑值 1 (true) 或 0 (false)。当您显式注释掉包含状态的对象时,该状态会隐式被注释掉。如果状态包含在原子子图中,则此属性为 false,除非显式注释掉的对象也包含在该原子子图中。
自 R2023a 起
此 属性 为只读。
状态是否被注释掉,指定为数值或逻辑值 1 (true) 或 0 (false)。当 IsExplicitlyCommented 或 IsImplicitlyCommented 为 true 时,此属性为 true。
添加到状态的注释文本,指定为字符串标量或字符向量。此属性仅在 IsExplicitlyCommented 属性为 true 时适用。在 Stateflow 编辑器中,当您指向状态上的注释徽章
时,文本显示为工具提示。当您将 IsExplicitlyCommented 属性设置为 false 时,CommentText 的值会还原为 ""。
图形外观
状态的位置和大小,指定为 [left top width height] 形式的四元素数值向量。
此 属性 为只读。
状态是否在图形上与框、状态或函数相交,指定为数值或逻辑值 1 (true) 或 0 (false)。
状态是否为组合状态,指定为数值或逻辑值 1 (true) 或 0 (false)。当您复制并粘贴组合状态时,您不仅复制该状态,还会复制其所有内容。有关详细信息,请参阅Copy and Paste by Grouping。
状态是否为子图,指定为数值或逻辑值 1 (true) 或 0 (false)。
是否显示状态内容的预览,指定为数值或逻辑值 1 (true) 或 0 (false)。此属性仅在 IsSubchart 属性为 true 时适用。
入向转移箭头的大小,指定为标量。
状态标签的字体大小,指定为标量。包含状态的图的 StateFont.Size 属性可设置此属性的初始值。
状态分解
位于状态顶层的子状态的分解,指定为 "EXCLUSIVE_OR" 或 "PARALLEL_AND"。有关详细信息,请参阅指定子状态分解。
此 属性 为只读。
同级状态的分解,指定为 'AND' 或 'OR'。状态从其父状态或图的 Decomposition 属性继承此属性。
状态在并行 (AND) 分解中的执行顺序,指定为整数标量。此属性仅在同时满足以下两个条件时适用:
状态的
Type属性为"AND"。包含状态的图的
UserSpecifiedStateTransitionExecutionOrder属性为true。
激活状态输出
是否为状态创建激活状态数据输出端口,指定为数值或逻辑值 1 (true) 或 0 (false)。有关详细信息,请参阅通过激活状态数据监控状态活动。
此 属性 为只读。
状态的激活状态数据对象,指定为 Stateflow.Data 对象。此属性仅在状态的 HasOutputData 属性为 true 时适用。
状态的激活状态数据对象的名称,指定为字符串标量或字符向量。此属性仅在状态的 HasOutputData 属性为 true 时适用。
激活状态输出数据的监控模式,指定为 "SelfActivity"、"ChildActivity" 或 "LeafStateActivity"。
状态的激活状态数据对象的枚举数据类型的名称,指定为字符串标量或字符向量。此属性仅在状态的 OutputMonitoringMode 属性为 "ChildActivity" 或 "LeafStateActivity" 时适用。有关详细信息,请参阅枚举名称。
是否手动定义激活状态数据输出的枚举数据类型,指定为数值或逻辑值 1 (true) 或 0 (false)。此属性仅在状态的 OutputMonitoringMode 属性为 "ChildActivity" 或 "LeafStateActivity" 时适用。有关详细信息,请参阅定义状态活动枚举类型。
信号记录和测试点监控
状态的信号记录属性,指定为具有以下属性的 Stateflow.SigLoggingInfo 对象:
DataLogging- 是否启用信号记录,指定为数值或逻辑值 1 (true) 或 0 (false)。DecimateData- 是否限制记录的数据量,指定为数值或逻辑值 1 (true) 或 0 (false)。Decimation- 抽取间隔,指定为整数标量。此属性仅在DecimateData属性为true时适用。LimitDataPoints- 是否限制要记录的数据点数,指定为数值或逻辑值 1 (true) 或 0 (false)。MaxPoints- 要记录的最大数据点数,指定为整数标量。此属性仅在LimitDataPoints属性为true时适用。NameMode- 信号名称的来源,指定为"SignalName"或"Custom"。LoggingName- 自定义信号名称,指定为字符串标量或字符向量。此属性仅在NameMode属性为"Custom"时适用。
在仿真期间,信号记录将状态的自身活动保存到 MATLAB® 工作区。有关详细信息,请参阅Log Simulation Output for States and Data。
示例: state.LoggingInfo.DataLogging = true;
是否将状态设置为测试点,指定为数值或逻辑值 1 (true) 或 0 (false)。您可以在仿真期间使用浮动示波器监控测试点。您还可以将测试点值记录到 MATLAB 工作区。有关详细信息,请参阅将信号配置为测试点 (Simulink)。
调试
状态的调试器属性,指定为具有以下属性的 Stateflow.StateDebug 对象:
OnEntry- 是否设置On State Entry断点,指定为数值或逻辑值 1 (true) 或 0 (false)。OnDuring- 是否设置During State断点,指定为数值或逻辑值 1 (true) 或 0 (false)。OnExit- 是否设置On State Exit断点,指定为数值或逻辑值 1 (true) 或 0 (false)。
有关详细信息,请参阅Set Breakpoints to Debug Charts。
示例: state.Debug.Breakpoints.OnEntry = true;
示例: state.Debug.Breakpoints.OnDuring = true;
示例: state.Debug.Breakpoints.OnExit = true;
代码生成
状态函数在生成代码中的外观,指定为以下值之一:
"Auto"- 内部计算确定生成代码中状态函数的外观。"Function"- 状态函数作为单独的静态函数来实现。"Inline"- 只要函数不是递归的一部分,对状态函数的调用就会被代码替换。
有关详细信息,请参阅Inline State Functions in Generated Code (Simulink Coder)。
层次结构
此 属性 为只读。
包含状态的图,指定为 Stateflow.Chart 对象。
此 属性 为只读。
状态的子查看器,指定为 Stateflow.Chart、Stateflow.State 或 Stateflow.Box 对象。子查看器可以以图形方式查看状态的图或子图。
此 属性 为只读。
包含状态的状态机,指定为 Stateflow.Machine 对象。
此 属性 为只读。
状态的父级在模型层次结构中的位置,指定为字符向量。
标识
状态的描述,指定为字符串标量或字符向量。
状态的文档链接,指定为字符串标量或字符向量。
状态的用户定义的标记,指定为任何类型的数据。
此 属性 为只读。
会话独立标识符,指定为整数标量。使用此属性区分状态与其父图中的其他对象。
此 属性 为只读。
唯一标识符,指定为整数标量。与 SSIdNumber 不同,每次启动新 MATLAB 会话时都会重新分配此属性的值,并且在删除对象后可能会回收该值。
对象函数
find | Identify specified objects in hierarchy |
getChildren | 标识对象的子级 |
getParent | 标识对象的父级 |
defaultTransitions | 识别指定对象中的默认转移 |
innerTransitions | 识别具有指定源的内部转移 |
outerTransitions | 识别具有指定源的出向转移 |
sinkedTransitions | 识别具有指定目标的转移 |
sourcedTransitions | 识别具有指定源的转移 |
getReferences | Identify references to symbol name |
renameReferences | Rename symbol and update references to symbol name |
commentedBy | Identify objects that implicitly comment out a graphical object |
dialog | 打开属性对话框 |
view | 在编辑环境中显示对象 |
highlight | 突出显示图形对象 |
fitToView | 放大图形对象 |
示例
在图 ch 中添加状态。将其名称设置为 A。
state = Stateflow.State(ch);
state.Name = "A";要在状态 state 中输入一个多行标签,您可以:
调用 MATLAB 函数
sprintf并使用转义序列\n插入换行符:str = sprintf("A\nen: action1();\ndu: action2();\nen,du: action3();"); sA.LabelString = str;
输入使用函数
newline创建换行符的串联文本表达式:str = "A" + newline + ... "en: action1();" + newline + ... "du: action2();" + newline + ... "en,du: action3();" sA.LabelString = str;

要提取状态标签指定的状态名称、entry 动作和 during 动作,请输入:
name = state.Name
name =
'A'entry = state.EntryAction
entry =
' action1();
action3();'during = state.DuringAction
during =
' action2();
action3();'有关详细信息,请参阅Specify Labels in States and Transitions Programmatically。
创建一个将子图内部结点连接到子图外部结点的超转移。

打开模型并访问图的 Stateflow.Chart 对象。
open_system("sfSupertransitionAPIExample") ch = find(sfroot,"-isa","Stateflow.Chart");
访问子图的 Stateflow.State 对象和各结点的 Stateflow.Junction 对象。
st = find(ch,"-isa","Stateflow.State"); j1 = find(st,"-isa","Stateflow.Junction"); j2 = find(ch,"-isa","Stateflow.Junction","-depth",1);
将子图的原始位置保存到临时工作区变量 subchartPosition。
subchartPosition = st.Position;
通过将子图的 IsSubchart 和 IsGrouped 属性设置为 false 将子图转换为普通状态。
st.IsSubchart = false;
Assertion failed: Deviant 'root deviant' not opened for transactions. Attempt to modify object of type 'StateflowDI.Junction' [id = -1 ] at kernel/deviant/Deviant.cpp:75:
st.IsGrouped = false;
当您将子图转换为普通状态时,它可能会更改大小以显示其内容。

添加将结点 j1 连接到结点 j2 的转移。
tr = Stateflow.Transition(ch); tr.Source = j1; tr.Destination = j2;

通过将状态的 IsSubchart 属性设置为 true 将状态还原为子图。将子图还原到其原始位置。
st.IsSubchart = true; st.Position = subchartPosition;

结点之间的转移现在是跨子图边界的超转移。
版本历史记录
在 R2006a 之前推出Stateflow.State 对象具有以下新的对象函数和属性:
对象函数
getReferences返回图引用状态名称的位置。对象函数
renameReferences重命名状态并更新图中对该状态名称的所有引用。对象函数
commentedBy标识导致状态被注释掉的显式注释对象。属性
IsCommented指示状态是否被注释掉。此属性取代了对象函数isCommented。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)