主要内容

Sqrt

计算平方根、带符号的平方根或平方根的倒数

  • Sqrt block

库:
Simulink / Math Operations
HDL Coder / HDL Floating Point Operations
HDL Coder / Math Operations

描述

Sqrt 模块计算输入信号的平方根、有符号平方根或平方根的倒数。从函数下拉列表中选择以下函数之一。

函数描述数学表达式 MATLAB® 等效函数
sqrt

输入信号的平方根

u0.5

sqrt
signedSqrt

输入信号绝对值的平方根乘以输入信号的符号

sign(u)*|u|0.5

rSqrt

输入信号的平方根的倒数

u-0.5

模块图标将发生变化以匹配函数。

示例

全部展开

此示例说明如何将负值输入信号的平方根计算为复数值输出。

通过将函数设置为 sqrt 并将输出信号类型设置为 complex,该模块将对输入值 -100 生成正确的结果 0 + 10i。如果您将输出信号类型更改为 autoreal,模块将输出 NaN

此示例说明如何计算负值输入信号的有符号平方根。

当模块输入为负值且您将函数设置为 signedSqrt 时,无论输出信号类型参数的设置如何,Sqrt 模块输出都相同。通过将第一个 Display 模块的数值显示格式设置为 decimal (Stored Integer),您可以看到复数输出的虚部值。

此示例说明如何计算浮点输入信号的 rSqrt。Sqrt 模块具有以下设置:

  • 方法 = Newton-Raphson

  • 迭代次数 = 1

  • 中间结果数据类型 = Inherit: Inherit from input

在牛顿-拉夫逊算法经过一次迭代后,模块输出与最终值 (0.4834) 的误差在 0.0004 内。

此示例说明如何计算定点输入信号的 rSqrt。Sqrt 模块具有以下设置:

  • 方法 = Newton-Raphson

  • 迭代次数 = 1

  • 中间结果数据类型 = Inherit: Inherit from input

在牛顿-拉夫逊算法经过一次迭代后,模块输出与最终值 (0.4834) 的误差在 0.0459 内。

端口

输入

全部展开

模块的输入信号,用于计算平方根、有符号平方根或平方根的倒数。sqrt 函数接受实数或复数输入,但复数定点信号除外。signedSqrtrSqrt 不接受复数输入。输入信号必须为浮点数。

下表总结了 sqrtrSqrtsignedSqrt 函数的浮点、整数和定点数据类型对复数类型和负值的支持。

函数数据类型复数负值
输入输出
sqrt浮点
 整数和定点

rSqrt

浮点
 整数和定点
signedSqrt浮点
 整数和定点

如果输入为负数,请将除 signedSqrt 之外的所有函数的输出信号设置为复数。

数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

输出

全部展开

输出信号,是输入信号的平方根、有符号平方根或平方根的倒数。当输入信号的类型为整数或定点时,输出必须为浮点。

数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

参数

全部展开

常设

指定模块计算的数学函数。模块图标将发生变化以匹配您选择的函数。

函数模块图标
sqrt Sqrt block
signedSqrt Signed Sqrt block
rSqrt Reciprocal Sqrt block

默认值取决于模块配置。

  • sqrt 默认值 - SqrtSquare Root 模块

  • signedSqrt 默认值 - Signed SqrtSigned Square Root 模块

  • rSqrt 默认值 - Reciprocal SqrtReciprocal Square Root 模块

编程用法

模块参数Operator
类型:字符向量
'sqrt' | 'signedSqrt' | 'rSqrt'

指定模块的输出信号类型。

函数输入信号类型输出信号类型
自动实数复数

sqrt

real

对于非负输入为 real

对于负输入为 NaN

对于非负输入为 real

对于负输入为 NaN

complex

complex

complex

error

complex

signedSqrt

real

real

real

complex

complex

error

error

error

rSqrt

real

real

real

error

complex

error

error

error

编程用法

模块参数OutputSignalType
类型:字符向量
'auto' | 'real' | 'complex'
默认值'auto'

指定采样时间间隔。要继承采样时间,请将此参数设置为 -1。有关详细信息,请参阅指定采样时间

依赖关系

仅当您将此参数设置为 -1 以外的值时才可见。要了解详细信息,请参阅不建议设置采样时间的模块

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

参数: SampleTime
值: "-1" (默认) | scalar or vector in quotes

算法

指定用于计算平方根倒数的方法。

方法支持的数据类型何时使用此方法
完全

浮点

您不需要逼近值时。

输入或输出必须为浮点类型。

牛顿-拉夫逊

浮点、定点和内置的整数类型

您需要快速的近似计算时。

完全方法提供了与 MATLAB 计算一致的结果。

依赖关系

要启用此参数,请将函数设置为 rSqrt

函数设置为 sqrtsignedSqrt 时,此参数设置为完全

编程用法

模块参数AlgorithmType
类型:字符向量
'Exact' | 'Newton-Raphson'
默认值'Exact'

指定执行牛顿-拉夫逊算法的迭代次数。在使用 rSqrt 函数且方法的值为牛顿-拉夫逊时,此参数有效。

如果您输入 0,则模块输出是牛顿-拉夫逊算法的初始估计值。

编程用法

模块参数Iterations
类型:字符向量
:整数
默认值'3'

数据类型

数据类型助手可帮助您设置数据属性。要使用数据类型助手,请点击 the Show data type assistant button。有关详细信息,请参阅使用数据类型助手指定数据类型

当您将函数设置为 sqrtrSqrt 时,请指定中间结果的数据类型。

该类型可以继承、直接指定或表示为数据类型对象,如 Simulink.NumericType 对象。

为了避免溢出,中间数据类型必须大于或等于可以包含输出数据类型平方的数据类型。

为平方根函数 sqrt 显式设置中间数据类型时,请遵循以下规范:

输入和输出数据类型中间数据类型
输入或输出为双精度。使用双精度。
输入或输出是单精度,而且有任何非单精度数据类型是双精度。 使用单精度或双精度。
输入和输出是定点。使用定点。

为平方根倒数函数 rSqrt 显式设置中间数据类型时,请遵循以下规范:

输入和输出数据类型中间数据类型
输入是双精度,输出不是单精度。使用双精度。
输入不是单精度,输出是双精度。使用双精度。
输入和输出是定点。使用定点。

小心

在下列情况下,不要将中间结果数据类型设置为继承:从输出继承

  • 您选择了牛顿-拉夫逊方法来计算平方根的倒数。

  • 输入数据类型为浮点。

  • 输出数据类型为定点。

在这些情况下,选择继承:从输出继承会使性能受到影响并产生错误。

要避免此错误,请将浮点类型的输入信号转换成定点数据类型。例如,在 Sqrt 模块之前插入一个 Data Type Conversion 模块以执行转换。

依赖关系

要启用此参数,请将函数设置为 sqrtrSqrt

编程用法

模块参数IntermediateResultsDataTypeStr
类型:字符向量
'Inherit: Inherit via internal rule' | 'Inherit: Inherit from input' | 'Inherit: Inherit from output' | 'double' | 'single''int8''uint8'int16'uint16''int32''uint32''int64''uint64'fixdt(1,16,0)fixdt(1,16,2^0,0)'<data type expression>'
默认值'Inherit: Inherit via internal rule'

指定输出数据类型。该类型可以继承、直接指定或表示为数据类型对象,如 Simulink.NumericType 对象。

依赖关系

当输入是小于单精度的浮点数据类型时,继承: 从内部规则继承输出数据类型取决于 Inherit floating-point output type smaller than single precision 配置参数的设置。当对数据类型进行编码所需的位数小于对单精度数据类型编码所需的 32 位时,数据类型小于单精度。例如,halfint16 小于单精度。

编程用法

模块参数OutDataTypeStr
类型:字符向量
'Inherit: Inherit via internal rule' | 'Inherit: Inherit via back propagation' | 'Inherit: Same as first input' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | int16 | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | fixdt(1,16,0) | fixdt(1,16,2^0,0) | fixdt(1,16,2^0,0) | '<data type expression>'
默认值'Inherit: Same as first input'

将软件检查的输出范围的下限值指定为有限的双精度实数标量值。

如果您指定总线对象作为此模块的数据类型,请不要为模块上的总线数据设置最小值。软件会忽略此设置。但请为指定作为数据类型的总线对象的总线元素设置最小值。有关详细信息,请参阅 Simulink.BusElement

软件使用最小值执行下列操作:

提示

输出最小值不会对实际输出信号进行饱和处理或截断。请改用 Saturation 模块。

编程用法

模块参数OutMin
类型:字符向量
:标量
默认值'[]'

将软件检查的输出范围的上限值指定为有限的双精度实数标量值。

如果您指定总线对象作为此模块的数据类型,请不要为模块的总线数据设置最大值。软件会忽略此设置。但请为指定作为数据类型的总线对象的总线元素设置最大值。有关详细信息,请参阅 Simulink.BusElement

软件使用最大值执行下列操作:

提示

输出最大值不会对实际输出信号进行饱和处理或截断。请改用 Saturation 模块。

编程用法

模块参数OutMax
类型:字符向量
:标量
默认值'[]'

指定定点运算的舍入模式。有关详细信息,请参阅舍入模式 (Fixed-Point Designer)

编程用法

模块参数RndMeth
类型:字符向量
值:'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
默认值:'Floor'

选中此选项将锁定此模块的输出数据类型设置,从而防止通过定点工具和定点顾问进行更改。有关详细信息,请参阅Use Lock Output Data Type Setting (Fixed-Point Designer)

编程用法

模块参数LockScale
类型:字符向量
'off' | 'on'
默认值'off'

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

  • on - 将溢出饱和处理为数据类型能够表示的最小值或最大值。

  • off - 溢出将绕回到数据类型可以表示的合适值。

例如,有符号 8 位整数 int8 可以表示的最大值是 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。

  • 选择此参数后,模块输出将在达到 127 时饱和。类似地,模块输出将在达到最小输出值 -128 时饱和。

  • 清除此参数后,软件会将导致溢出的值解释为 int8,这可能产生意外结果。例如,以 int8 表示的模块结果 130(二进制 1000 0010)为 -126。

提示

  • 如果您的模型存在可能的溢出,而您希望在生成的代码中进行显式饱和保护,请考虑选中此参数。

  • 如果您希望优化生成的代码的效率,请考虑清除此参数。清除此参数还可以帮助您避免过度地指定信号超出范围时模块的处理方式。有关详细信息,请参阅信号范围错误故障排除

  • 如果选中此参数,饱和将应用于模块中的每个内部操作,而不仅仅应用于输出或结果。

  • 一般情况下,代码生成进程可以检测到何时不可能发生溢出。在这种情况下,代码生成器不会生成饱和代码。

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

参数: SaturateOnIntegerOverflow
值: 'on' (默认) | 'off'

模块特性

数据类型

double | fixed point | half | integer | single

直接馈通

多维信号

可变大小信号

过零检测

替代配置

全部展开

Signed Sqrt 模块将函数设置为 signedSqrt

库:
Simulink / Math Operations

Reciprocal Sqrt 模块将函数设置为 rSqrt

库:
Simulink / Math Operations
HDL Coder / HDL Floating Point Operations
HDL Coder / Math Operations

Square Root 模块与 Sqrt 模块只有名称不同。

库:
Simulink / Quick Insert / Math Operations

Signed Square Root 模块将函数设置为 signedSqrt

Signed Square Root 模块与 Signed Sqrt 模块只有名称不同。

库:
Simulink / Quick Insert / Math Operations

Reciprocal Square Root 模块将函数设置为 rSqrt

Reciprocal Square Root 模块与 Reciprocal Sqrt 模块只有名称不同。

库:
Simulink / Quick Insert / Math Operations

扩展功能

全部展开

C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。

PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。

定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。

版本历史记录

在 R2010a 中推出