主要内容

用For Each子系统对标量算法进行矢量化

这个例子展示了如何使用For Each子系统。在本例中,为了简单起见,操作是在向量上执行的。

使用开放模式按钮以打开示例模型sldemo_foreach_vectorized.这个模型包含一个For Each子系统,它一个接一个地处理输入信号。

For Each子系统的输入是要处理的信号,每个信号使用的FIR滤波器的系数,以及公共增益。

每个信号都是标量,需要单独处理。因此,控制分区维数的For Each块被设置为沿着维度1对输入信号进行分区,方法是通过分区宽度为1的切片。对于每个输入信号,相应的一组系数也必须使用相同的准则进行划分。增益对所有的信号都是共同的,所以这个输入没有被分割。

由于期望输出信号维数与输入信号维数相匹配,因此将级联维数设置为与分区维数相等。如果您想改变信号维数(在本例中是a的转置),您可以选择2作为连接维数。

对于For Each子系统,必须设置分区尺寸和宽度,而不是输入信号大小。然后检查确保这个大小是分区宽度的倍数。如果没有检测到错误,子系统将计算包含的子系统将执行的独立执行的次数。这些执行是独立的,因为与子系统中包含的给定块相关联的状态在每次执行中都有一个唯一的值。

要查看该模型的非向量化实现,双击模型右下角的块。这个实现不使用For Each子系统,而是通过尽可能多地复制子系统,并通过适当地选择和连接信号来模拟它的功能。这种复制过程容易出错,而且不可扩展——改变输入信号的大小需要相应地改变模型。