指定 Stateflow 数据的作用域和类型
作用域和类型设定定义数据对象在 Stateflow 图中的行为方式。
作用域确定数据的来源以及它如何连接到图环境。例如,输入数据从 Stateflow® 流入图中,而局部数据则保留在图运算内部。
类型指定数据格式和存储特性,从而影响内存使用量、数值精度和可用运算。例如,您可能将 double 用于高精度计算,或将 uint8 用于高效使用内存的整数存储。
适当的数据设定会影响图性能的三个关键方面。
存储效率,即分配给数据对象的内存量。
数据表示,即值如何转换为二进制模式以进行处理。
可用运算,即允许的数学和逻辑运算集。
指定数据类型
您可以使用属性检查器定义数据类型:
在符号窗格中选择数据对象。
在类型字段中,从以下各项中选择:
内置类型的下拉列表
计算结果为有效数据类型的自定义表达式
从 Simulink 对象派生类型的继承选项
有关数据属性配置的全面信息,请参阅“设置数据属性”。
从 Simulink 对象继承数据类型
要从连接的 Simulink 对象派生数据类型,请将类型下拉列表设置为继承:与 Simulink 相同。此选项适用于特定数据作用域:
| 作用域 | 类型源 |
|---|---|
| 输入 | 连接到对应图输入端口的 Simulink® 输入信号 |
| 输出 | 连接到对应图输出端口的 Simulink 输出信号 |
| 参数 | MATLAB 基础工作区变量、Simulink 数据字典条目或封装子系统参数 |
| 数据存储内存 | 具有匹配名称的 Simulink 数据存储 |
当您需要特定数据类型时,请不要使用继承:与 Simulink 相同。
要验证继承的数据类型,请执行以下操作:
构建 Simulink 模型以编译数据类型信息。
打开模型资源管理器并导航到您的图。
在内容窗格中,检查 CompiledType 列以查看实际继承的类型。
从其他数据对象派生数据类型
使用 type 运算符将一个数据对象的类型建立在另一个 Stateflow 数据对象的基础上。使用 type 有助于保持相关数据之间的类型一致性。
模型 sf_bus_demo 使用以下表达式定义局部结构体:
type(inbus)
此表达式使 counterbus_struct 继承与输入结构体 inbus 相同的数据类型。由于 inbus 从 Simulink.Bus 对象 COUNTERBUS 派生其类型,因此局部结构体也使用 COUNTERBUS 类型定义。
有关详细的实现示例,请参阅在 Stateflow 图中集成自定义结构体。
使用 Simulink 别名指定数据类型
您可以使用 Simulink 别名类型创建可重用的数据类型定义。别名使您能够在整个模型中保持类型命名的一致性。
要创建和使用数据类型别名,请执行以下操作:
在 MATLAB 命令提示符下定义别名:
MyFloat = Simulink.AliasType; MyFloat.BaseType = "single";
在您的 Stateflow 图中,在符号窗格中选择目标数据对象。
在属性检查器中,将类型设置为
MyFloat。构建模型以编译类型信息。
在模型资源管理器的 CompiledType 列中验证编译后的类型。
别名提供描述性名称,并为代码生成和仿真维护底层基础类型属性。
另请参阅
fixdt (Simulink) | Simulink.AliasType (Simulink) | Simulink.NumericType (Simulink)