主要内容

一个标量算法的矢量化与一个子系统

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

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

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

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

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

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

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