# 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
# 信号属性
要求所有输入具有相同的数据类型off(默认) | on
指定输入信号是否必须全部具有相同的数据类型。如果启用此参数,则在输入信号类型不同时,仿真过程中会发生错误。
对整数溢出进行饱和处理 — 溢出操作的方法off(默认) | on
指定对溢出是进行饱和处理还是绕回处理。
| 操作 | 原理说明 | 对溢出的影响 | 示例 |
|---|---|---|---|
| 选中此复选框 (on)。 | 您的模型可能有溢出,并且您希望在生成的代码中具有显式饱和保护。 | 将溢出饱和处理为数据类型能够表示的最小值或最大值。 | int8(有符号 8 位整数)数据类型可以表示的最大值为 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。如果选中此复选框,模块输出将在达到 127 时饱和。类似地,模块输出将在达到最小输出值 -128 时饱和。 |
| 不选中此复选框 (off)。 | 您需要优化所生成代码的效率。您希望避免过度地指定信号超出范围时的处理方式。 | 溢出会绕回到由数据类型表示的适当值。 | int8(有符号 8 位整数)数据类型可以表示的最大值为 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。清除该复选框时,软件会将导致溢出的值解释为 int8,这可能产生意外结果。例如,以 int8 表示的模块结果 130(二进制 1000 0010)为 -126。 |
如果选中此复选框,饱和将应用于模块中的每个内部操作,而不仅仅应用于输出或结果。通常,代码生成过程可以检测何时不会发生溢出。在这种情况下,代码生成器不会生成饱和代码。
# 版本历史记录
- 在 2024b 之前推出
# 限制信息
不支持部分
- 参数-常设-图标形状 — 模块图标形状
- 参数-常设-求和维度 — 对单个向量输入执行的运算的维度
- 参数-常设-维度 — 对向量输入求和所用的维数
- 参数-常设-采样时间 — -1 以外的采样时间值
- 参数-信号属性-要求所有输入具有相同的数据类型 — 要求所有输入具有相同的数据类型
- 输出最小值 — 范围检查的最小输出值
- 输出最大值 — 范围检查的最大输出值
- 锁定数据类型设置以防止被定点工具更改 — 防止定点工具覆盖数据类型