# Sum


输入信号的加减运算

  • 库: Sysblock / MathOperation

# 描述

您可以使用符号列表参数以及加号 (+)、减号 (-) 和分隔符 (|) 指定模块的运算。

  • +- 字符的个数等于输入的个数。例如,+-+ 需要三个输入。模块从第一个(顶部)输入信号中减去第二个(中间)输入信号,然后加上第三个(底部)输入信号。
  • 分隔符在模块图标上的端口之间产生额外空间。
  • 如果仅执行加法,则可以使用一个与输入个数相等的数值。
  • 如果只有一个输入端口,则单个 +- 会在所有维度上或在指定的维度中加上或减去元素。

Sum 模块首先将输入数据类型转换为其累加器数据类型,然后执行指定的运算。最后,模块使用指定的舍入和溢出模式,将计算结果转换为输出数据类型。

# 示例

对两个常量值进行相加, 将两个 Constant 模块设置为 1,Sum 模块符号列表选择 ++。

参考示例模型

# 端口

# 输入

u — 第一个输入操作数信号
标量 | 向量 | 矩阵

用于加法或减法运算的输入信号。如果只有一个输入信号,则对所有维度或指定维度中的元素执行加法或减法。

数据类型: float | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point

u_n — 第 n 个输入操作数信号
标量 | 向量 | 矩阵

运算的第 n 个输入信号,输入的个数与符号列表参数中的符号个数相匹配。模块按照列出的顺序将运算应用于输入。您还可以使用一个与输入端口个数相等的数值作为符号列表参数。模块创建输入端口并将加法应用于所有输入。例如,如果为符号列表参数赋值 5,则模块创建 5 个输入端口并将它们相加以产生输出。

所有的非标量输入信号必须具有相同的维度。标量输入将扩展为与其他输入具有相同的维度。

数据类型: float | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point

# 输出

y — 输出信号
标量 | 向量 | 矩阵

加法和 / 或减法运算产生的输出信号,输出信号具有与输入信号相同的维度。

数据类型: float | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point

# 参数

# 主要

符号列表 — 对输入执行的运算
++ (默认) | + | - | | | integer

输入对输入信号执行的加法和减法运算。为每个运算创建一个输入端口。分隔符 (|) 在模块图标上的输入端口之间产生额外空间。加法是默认运算。如果您只想将输入信号相加,请键入输入端口的个数。各项运算按所列顺序执行。

只输入一个元素时,模块将启用求和维度参数。对于单个向量输入,+- 会在所有维度上或在指定的维度中加上或减去元素。

提示

您可以通过在符号列表参数中的符号之间插入分隔符 (|) 来控制输入端口在模块上的位置。

求和维度 — 对单个向量输入执行的运算的维度
所有维度(默认) | 指定的维度

选择模块执行求和运算所用的维度。

选择指定的维度,则会出现另一个参数维度。选择对向量输入求和所用的特定维度。

# 依存关系

符号列表参数中仅列出一个符号时启用。

维度 — 对向量输入求和所用的维数
1 (默认) | integer

当为求和维度参数选择指定的维度时,请指定执行运算所用的维度。

假设您有一个 2×3 矩阵 U。

如果指定的维度大于输入的维度,则会显示错误消息。

# 依存关系

求和维度参数选择指定的维度时启用。

# 信号属性

要求所有输入具有相同的数据类型
off(默认) | on

指定输入信号是否必须全部具有相同的数据类型。如果启用此参数,则在输入信号类型不同时,仿真过程中会发生错误。

对整数溢出进行饱和处理 — 溢出操作的方法
off(默认) | on

指定对溢出是进行饱和处理还是绕回处理。

操作 原理说明 对溢出的影响 示例
选中此复选框 (on)。 您的模型可能有溢出,并且您希望在生成的代码中具有显式饱和保护。 将溢出饱和处理为数据类型能够表示的最小值或最大值。 int8(有符号 8 位整数)数据类型可以表示的最大值为 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。如果选中此复选框,模块输出将在达到 127 时饱和。类似地,模块输出将在达到最小输出值 -128 时饱和。
不选中此复选框 (off)。 您需要优化所生成代码的效率。您希望避免过度地指定信号超出范围时的处理方式。 溢出会绕回到由数据类型表示的适当值。 int8(有符号 8 位整数)数据类型可以表示的最大值为 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。清除该复选框时,软件会将导致溢出的值解释为 int8,这可能产生意外结果。例如,以 int8 表示的模块结果 130(二进制 1000 0010)为 -126。

如果选中此复选框,饱和将应用于模块中的每个内部操作,而不仅仅应用于输出或结果。通常,代码生成过程可以检测何时不会发生溢出。在这种情况下,代码生成器不会生成饱和代码。

# 版本历史记录

  • 在 2024b 之前推出

# 限制信息

不支持部分

  1. 参数-常设-图标形状 — 模块图标形状
  2. 参数-常设-求和维度 — 对单个向量输入执行的运算的维度
  3. 参数-常设-维度 — 对向量输入求和所用的维数
  4. 参数-常设-采样时间 — -1 以外的采样时间值
  5. 参数-信号属性-要求所有输入具有相同的数据类型 — 要求所有输入具有相同的数据类型
  6. 输出最小值 — 范围检查的最小输出值
  7. 输出最大值 — 范围检查的最大输出值
  8. 锁定数据类型设置以防止被定点工具更改 — 防止定点工具覆盖数据类型

# 另请参阅

Gain | Bias