# Sqrt
计算平方根、带符号的平方根或平方根的倒数
- 库: Sysblock / MathOperation
# 描述
Sqrt 模块计算输入信号的平方根、有符号平方根或平方根的倒数。从函数下拉列表中选择以下函数之一。
| 函数 | 描述 | 数学表达式 | Syslab 等效函数 |
|---|---|---|---|
sqrt | 输入信号的平方根 | u^0.5 | sqrt |
signedSqrt | 输入信号绝对值的平方根乘以输入信号的符号 | sign(u)*|u|^0.5 | — |
rSqrt | 输入信号的平方根的倒数 | u^-0.5 | — |
模块图标将发生变化以匹配函数。
# 示例
计算 4 的平方根,将 Constant 模块的值设置为 4,Sqrt 模块函数选择 sqrt。
参考示例模型
。
# 端口
# 输入
u—输入信号标量 | 向量 | 矩阵
模块的输入信号,用于计算平方根、有符号平方根或平方根的倒数。sqrt 函数接受实数或复数输入,但复数定点信号除外。signedSqrt 和 rSqrt 不接受复数输入。输入信号必须为浮点数。
下表总结了 sqrt、rSqrt 和 signedSqrt 函数的浮点、整数和定点数据类型对复数类型和负值的支持。
| 函数 | 数据类型 | 复数 | 负值 |
|---|---|---|---|
sqrt | 浮点 | 是 | 是 |
| 整数和定点 | 否 | 否 | |
rSqrt | 浮点 | 否 | 否 |
| 整数和定点 | 否 | 否 | |
signedSqrt | 浮点 | 否 | 是 |
| 整数和定点 | 否 | 否 |
如果输入为负数,请将除 signedSqrt 之外的所有函数的输出信号设置为复数。
数据类型: float | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point
# 输出
y — 输出信号标量 | 向量 | 矩阵
输出信号,是输入信号的平方根、有符号平方根或平方根的倒数。当输入信号的类型为整数或定点时,输出必须为浮点。
数据类型: float | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point
# 参数
# 主要
函数 — 模块执行的函数sqrt(默认) | signedSqrt | rSqrt
指定模块计算的数学函数。模块图标将发生变化以匹配您选择的函数。
| 函数 | 模块图标 |
|---|---|
sqrt | ![]() |
signedSqrt | ![]() |
rSqrt | ![]() |
# 依存关系
当此参数设置为 signedSqrt 时,中间结果数据类型参数被禁用。
采样时间 — -1 以外的采样时间值-1 (默认) | 标量 | 向量
# 数据类型
单击显示数据类型助手按钮以显示数据类型助手,帮助您设置数据类型属性。
中间结果数据类型—中间结果的数据类型Inherit: internalRule (默认) | Inherit: backPropagation | Inherit: sameAsInput | double | float | int8 | uint8 | int16 | uint16 | int32 | uint32 | fixdt(1,16,,0)
指定当您在常设窗格上将函数设置为 sqrt 或 rSqrt 时中间结果的数据类型。
该类型可以继承、直接指定或表示为数据类型对象。
注意
为了避免溢出,中间数据类型必须大于或等于可以包含输出数据类型平方的数据类型。
为平方根函数 sqrt 显式设置中间数据类型时,请遵循以下规范:
| 输入和输出数据类型 | 中间数据类型 |
|---|---|
| 输入或输出为双精度。 | 使用双精度。 |
| 输入或输出是单精度,而且有任何非单精度数据类型不是双精度。 | 使用单精度或双精度。 |
| 输入和输出是定点。 | 使用定点。 |
为平方根倒数函数 rSqrt 显式设置中间数据类型时,请遵循以下规范:
| 输入和输出数据类型 | 中间数据类型 |
|---|---|
| 输入是双精度,输出不是单精度。 | 使用双精度。 |
| 输入不是单精度,输出是双精度。 | 使用双精度。 |
| 输入和输出是定点。 | 使用定点。 |
# 依存关系
当函数参数设置为 signedSqrt 时,此参数被禁用。
对整数溢出进行饱和处理 — 选择发生整数溢出时的行为off(默认) | on
| 操作 | 执行此操作的原因 | 溢出时会发生的情况 | 示例 |
|---|---|---|---|
| 选中此复选框。 | 您的模型可能有溢出,并且您希望在生成的代码中具有显式饱和保护。 | 将溢出饱和处理为数据类型能够表示的最小值或最大值。 | int8(有符号 8 位整数)数据类型可以表示的最大值为 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。如果选中此复选框,模块输出将在达到 127 时饱和。类似地,模块输出将在达到最小输出值 -128 时饱和。 |
| 不选中此复选框。 | 您需要优化所生成代码的效率。您希望避免过度地指定信号超出范围时的处理方式。 | 溢出会绕回到由数据类型表示的适当值。 | int8(有符号 8 位整数)数据类型可以表示的最大值为 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。清除该复选框时,软件会将导致溢出的值解释为 int8,这可能产生意外结果。例如,以 int8 表示的模块结果 130(二进制 1000 0010)为 -126。 |
如果选中此复选框,饱和将应用于模块中的每个内部操作,而不仅仅应用于输出或结果。通常,代码生成过程可以检测何时不会发生溢出。在这种情况下,代码生成器不会生成饱和代码。
# 版本历史记录
- 在 2024b 之前推出

