指定 Stateflow 数据的作用域和类型
数据类型定义信息在计算机内存中的存储格式。数据类型影响 Stateflow® 图的三个关键方面:
分配给数据的存储空间量。
如何将数据值转换为二进制模式。
可对数据执行的运算集。
使用数据类型来优化图的资源使用,并确保软件应用程序正确处理图数据。
在 Stateflow 中,您通过数据的类型、作用域和模式来定义数据。数据类型是数据在系统中存储的特定方式。例如,您可能有 double
或 single
数据类型。作用域是数据在 Stateflow 图中的操作方式。例如,输入数据是 Simulink® 输入到 Stateflow 中的数据,而局部数据是源自 Stateflow 并停留在其内的数据。模式指定您可以选择的类型子集。例如,如果模式为 Inherited
,则数据从 Simulink 中获取信息,但如果模式为 Expression
,则数据信息取决于您输入的表达式。仅当使用数据类型助手时才能指定模式。
您可以在属性检查器中指定数据类型。在类型字段中,从下拉列表中选择一种类型,或输入一个计算结果为数据类型的表达式。有关详细信息,请参阅设置数据属性。
从 Simulink 对象继承数据类型
当您将类型下拉列表设置为继承:与 Simulink 相同时,作用域为输入、输出、参数和数据存储内存的数据对象从 Simulink 对象继承其数据类型。如果您预计数据是某特定类型,请不要将类型设置为继承:与 Simulink 相同。
作用域 | 描述 |
---|---|
输入 | 从连接到图中对应输入端口的 Simulink 输入信号继承类型。 |
输出 | 从连接到图中对应输出端口的 Simulink 输出信号继承类型。 |
参数 | 从对应的 MATLAB® 基础工作区变量、Simulink 数据字典条目或封装子系统中的 Simulink 参数继承类型。 |
数据存储内存 | 从对应的 Simulink 数据存储中继承类型。 |
要确定对象继承的数据类型,请执行以下操作:
编译 Simulink 模型。
打开模型资源管理器。
在内容窗格中,检查 CompiledType 列。
从其他数据对象派生数据类型
您可以使用 type
运算符从其他 Stateflow 数据对象中派生数据类型。例如,模型 sf_bus_demo
使用输入结构体 inbus
的数据类型定义局部结构体 counterbus_struct
的数据类型。此结构体通过以下表达式来定义:
type(inbus)
由于 inbus
从 Simulink.Bus
对象 COUNTERBUS
派生其类型,counterbus_struct
也从 COUNTERBUS
派生其数据类型。
有关此示例的详细信息,请参阅在 Stateflow 图中集成自定义结构体。
使用 Simulink 别名指定数据类型
可以通过使用 Simulink 数据类型别名来指定 Stateflow 数据的类型。有关详细信息,请参阅 Simulink.AliasType
(Simulink)。
例如,假设您要定义一个数据类型别名 MyFloat
,它对应于内置数据类型 single
。在 MATLAB 命令提示符处,输入:
MyFloat = Simulink.AliasType;
MyFloat.BaseType = "single";
要使用此别名指定数据类型,请打开 Stateflow 图,并在符号窗格中选择数据。然后,在属性检查器中,将类型设置为 MyFloat
。
在构建模型后,模型资源管理器的 CompiledType 列会显示编译后的仿真中所使用的类型。
另请参阅
fixdt
(Simulink) | Simulink.AliasType
(Simulink) | Simulink.NumericType
(Simulink)