For Each
For Each 子系统的控制模块
描述
For Each 模块用作 For Each Subsystem 模块的控制模块。具体来说,For Each 模块可以使 For Each 子系统内的模块能够独立处理输入信号或封装参数的元素。此子系统内每个具有状态的模块维护它所处理的每个元素或子数组的一组单独状态。随着该子系统中的模块集对元素(或子数组)的处理,该子系统串联结果以形成输出信号。
在更改输入或封装参数后使用 For Each 子系统迭代计算输出。为此,请在 For Each 模块对话框中配置输入信号或封装参数的分区。
将输入信号分区到子系统
要为 For Each 子系统中的每次迭代指定要对哪些输入信号分区,请使用 For Each 模块的对话框中的输入分区选项卡。在指定要分区的信号时,指定分区维度、分区宽度和分区偏移量参数。
对子系统的封装参数进行分区
您可以对 For Each Subsystem 模块的封装参数进行分区。对于在每次迭代中结构相同但参数值不同的系统,分区非常有用。在这种情况下,针对每个参数更改模型来对额外输入参数进行分区非常繁琐。请改为将封装参数添加到 For Each 子系统中。有关详细信息,请参阅创建简单封装。要选择封装参数进行分区,请使用 For Each 模块对话框中的参数分区选项卡。有关详细信息,请参阅下文的选择分区参数。
串联输出
通过在输出串联选项卡中指定串联维度来定义沿哪个维度串联结果。
模块为每个子数组生成的结果沿串联维度 1 堆叠。默认情况下,使用维度 1(y 轴),这意味着结果垂直堆叠。但是,如果指定的串联维度为 2,结果将沿水平方向(x 轴)串联。因此,如果该过程生成行向量,则串联的结果在第一种情况下是矩阵,在第二个种情况下是行向量。
选择分区参数
当选择要分区的输入信号或子系统封装参数时,您需要为每次迭代指定如何将其分解为元素或子数组。通过为分区维度、分区宽度和分区偏移量参数设置整数值来执行此操作。
作为说明,以如下形式的输入信号矩阵 A
为例:
标签 d1 和 d2 分别定义维度 1 和 2。如果为分区维度和分区宽度均保留默认设置 1
,为分区偏移量保留默认设置 0
,则 Simulink® 会垂直于分区维度 1 以等于分区宽度(一个元素)的宽度进行切片:
矩阵 A 分解为以下三个行向量:
如果改为将 2
指定为分区维度,则 Simulink 将垂直于维度 2 进行切片来形成以下三个列向量:
除了将分区维度设置为 2
之外,如果再将分区宽度设置为 2
并将分区偏移量设置为 -1
,Simulink 会将矩阵处理为两个重叠的 3×2 分区。
默认情况下,处理输入信号或封装参数的所有分区。要处理部分分区,请在迭代次数中输入要处理的分区的数量。在上面的矩阵示例中,如果分区偏移量设置为 0
(默认值),并且迭代次数设置为 2
,则仅处理输入矩阵 A
的前 2 行或前 2 列。
注意
在 Simulink 中,只有信号被视为一维。封装参数是行向量或列向量,具体取决于其方向。要对行向量进行分区,请将分区维度指定为 2(沿列进行)。要对列向量进行分区,请将分区维度指定为 1(沿行进行)。
示例
端口
输出
参数
扩展功能
版本历史记录
在 R2010a 中推出