Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

使用总线数组

设置模型以使用总线数组通常涉及以下任务:

  1. 定义总线数组。请参阅从非虚拟总线创建总线数组

  2. 添加子系统,用于对总线数组的每个元素执行迭代处理。请参阅执行迭代处理

  3. 在迭代处理子系统中对您的标量算法建模。

    1. 对总线数组执行操作(使用 SelectorAssignment 模块)。

    2. 使用 Bus SelectorBus Assignment 模块从子系统中的非虚拟总线中选择元素或为其分配元素。

    请参阅 总线数组赋值从总线数组中选择总线元素

  4. (可选)导入或记录总线数据数组。请参阅导入总线数据的数组记录总线数组

生成的模型创建总线数组,并使用子系统迭代处理该数组的元素。

Nonvirtual buses are grouped in an array of buses that is input to a subsystem that provides iterative processing.

执行迭代处理

您可以使用 For Each SubsystemWhile Iterator SubsystemFor Iterator Subsystem 等模块对总线数组的总线数据执行迭代处理。您可以使用上述模块之一对下列各项执行相同类型的处理:

  • 总线数组中的每个总线

  • 总线数组中选定的总线子集

总线数组赋值

如何为总线数组中的一个或多个元素赋值取决于您的建模要求。

  • 要为总线数组中的指定总线赋值,请使用 Assignment 模块。有关示例,请参阅 总线数组建模

  • 要为总线中的指定元素赋值,请使用 Bus Assignment 模块。在子系统(例如 For Each 子系统)中访问总线,或通过 Selector 模块从总线数组中选择一个总线来对其进行访问。有关示例,请参阅 将信号值赋给总线元素

    Bus Assignment 模块还可以对作为总线元素的总线数组赋值或完全替换该数组。

  • 要为总线数组中的总线元素赋值,可以使用 MATLAB Function 模块。有关示例,请参阅 Assign into Elements of Array of Buses

从总线数组中选择总线元素

要从总线数组中选择总线元素,请执行以下操作:

  1. 使用 Selector 模块从总线数组中选择一个总线。总线输入数组可以具有任何维度。Selector 模块的输出总线是来自总线输入数组的选定或重新排序的元素集。

  2. 使用 Bus Selector 模块从总线中选择一个总线元素。Bus Selector 模块的输入必须是总线。

有关示例,请参阅 总线数组建模

导入总线数据的数组

使用根 Inport 模块导入(加载)一个总线数组的 MATLAB® timeseries 对象的结构体数组。您可以将部分数据导入该总线数组。有关详细信息,请参阅 Import Array of Buses Data

您不能使用 From WorkspaceFrom File 模块导入总线数组的数据。

记录总线数组

要导出总线数组,请将信号标记为进行信号记录。有关详细信息,请参阅保存仿真的运行时数据

注意

Simulink® 在快速加速模式下不会记录引用模型内的信号。

要访问总线数组中特定信号的信号记录数据,请浏览结构体层次结构并指定特定信号的索引。有关详细信息,请参阅访问使用 Dataset 格式记录的总线数据

选择输出配置参数时,不会记录根级总线输出。请改用标准信号记录,如使用信号记录保存信号数据中所述。

不要直接在 For Each 子系统中对总线或总线数组使用信号记录。使用 Bus Selector 模块选择要记录的总线元素信号,或在子系统外部添加 Outport 模块,然后记录该信号。有关详细信息,请参阅Log Signals in For-Each Subsystems

注意

仅当在普通模式下运行仿真时,信号记录才支持具有可变大小信号的总线数组。 (自 R2023a 起)

初始化总线数组

要为总线数组中的每个单独信号指定唯一的初始值,可以使用初始条件结构体数组。数组中的每个结构体都初始化其中一个总线。

要用结构体参数初始化总线数组,可以使用:

  • 数字 0。在这种情况下,总线数组中的所有单个信号都使用初始值 0

  • 标量 struct,表示与总线类型相同的字段层次结构和字段名称。在这种情况下,标量结构体扩展以初始化总线数组中的每个单独的信号。

  • 结构体数组,为总线数组中的每个信号指定初始值。

    如果使用结构体数组,数组中的所有结构体必须具有相同的字段层次结构体。层次结构中的每个字段必须在整个数组中具有相同的特征:

    • 字段名称

    • 数值数据类型,如 singleint32

    • 复/实性

    • 维度

您不能使用非完全结构体。

有关示例,请参阅Initialize Buses and Arrays of Buses Using MATLAB Structure from Type EditorProgrammatically Initialize Arrays of Buses

代码生成

总线数组的代码生成产生具有特定格式的结构体。请参阅Code Generation for Arrays of Buses

注意

具有可变大小信号的总线数组不支持代码生成。

相关主题