主要内容

指定 Stateflow 数据的作用域和类型

作用域和类型设定定义数据对象在 Stateflow 图中的行为方式。

作用域确定数据的来源以及它如何连接到图环境。例如,输入数据从 Stateflow® 流入图中,而局部数据则保留在图运算内部。

类型指定数据格式和存储特性,从而影响内存使用量、数值精度和可用运算。例如,您可能将 double 用于高精度计算,或将 uint8 用于高效使用内存的整数存储。

适当的数据设定会影响图性能的三个关键方面。

  • 存储效率,即分配给数据对象的内存量。

  • 数据表示,即值如何转换为二进制模式以进行处理。

  • 可用运算,即允许的数学和逻辑运算集。

指定数据类型

您可以使用属性检查器定义数据类型:

  1. 符号窗格中选择数据对象。

  2. 类型字段中,从以下各项中选择:

    • 内置类型的下拉列表

    • 计算结果为有效数据类型的自定义表达式

    • 从 Simulink 对象派生类型的继承选项

有关数据属性配置的全面信息,请参阅“设置数据属性”。

从 Simulink 对象继承数据类型

要从连接的 Simulink 对象派生数据类型,请将类型下拉列表设置为继承:与 Simulink 相同。此选项适用于特定数据作用域:

作用域类型源
输入连接到对应图输入端口的 Simulink® 输入信号
输出连接到对应图输出端口的 Simulink 输出信号
参数MATLAB 基础工作区变量、Simulink 数据字典条目或封装子系统参数
数据存储内存具有匹配名称的 Simulink 数据存储

当您需要特定数据类型时,请不要使用继承:与 Simulink 相同

要验证继承的数据类型,请执行以下操作:

  1. 构建 Simulink 模型以编译数据类型信息。

  2. 打开模型资源管理器并导航到您的图。

  3. 内容窗格中,检查 CompiledType 列以查看实际继承的类型。

从其他数据对象派生数据类型

使用 type 运算符将一个数据对象的类型建立在另一个 Stateflow 数据对象的基础上。使用 type 有助于保持相关数据之间的类型一致性。

模型 sf_bus_demo 使用以下表达式定义局部结构体:

type(inbus)

此表达式使 counterbus_struct 继承与输入结构体 inbus 相同的数据类型。由于 inbus 从 Simulink.Bus 对象 COUNTERBUS 派生其类型,因此局部结构体也使用 COUNTERBUS 类型定义。

有关详细的实现示例,请参阅在 Stateflow 图中集成自定义结构体

使用 Simulink 别名指定数据类型

您可以使用 Simulink 别名类型创建可重用的数据类型定义。别名使您能够在整个模型中保持类型命名的一致性。

要创建和使用数据类型别名,请执行以下操作:

  1. 在 MATLAB 命令提示符下定义别名:

    MyFloat = Simulink.AliasType;
    MyFloat.BaseType = "single";
  2. 在您的 Stateflow 图中,在符号窗格中选择目标数据对象。

  3. 在属性检查器中,将类型设置为 MyFloat

  4. 构建模型以编译类型信息。

  5. 模型资源管理器CompiledType 列中验证编译后的类型。

别名提供描述性名称,并为代码生成和仿真维护底层基础类型属性。

另请参阅

(Simulink) | (Simulink) | (Simulink)

主题