Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

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 函数接受实数或复数输入,但复数定点信号除外。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
signedSqrt
rSqrt

依存关系

当此参数设置为 signedSqrt 时,中间结果数据类型参数被禁用。

编程用法

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

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

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

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 以外的值时才可见。要了解详细信息,请参阅不建议设置采样时间的模块

编程用法

模块参数:SampleTime
类型:字符串标量或字符向量
默认值:"-1"

算法

指定用于计算平方根倒数的方法。此参数仅对 rSqrt 函数有效。

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

浮点

您不需要逼近值时。

注意

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

牛顿-拉夫逊

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

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

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

注意

不管模块对话框中显示了哪些选项,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 模块以执行转换。

依存关系

函数参数设置为 signedSqrt 时,此参数被禁用。

编程用法

模块参数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® 检查的输出范围的下限值指定为有限的双精度实数标量值。

注意

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

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

注意

输出最小值不会饱和或剪切实际输出信号。请改用 Saturation 模块。

编程用法

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

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

注意

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

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

注意

输出最大值不会饱和或剪切实际输出信号。请改用 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'

操作执行此操作的原因溢出时会发生的情况示例

选中此复选框。

您的模型可能有溢出,并且您希望在生成的代码中具有显式饱和保护。

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

int8(有符号 8 位整数)数据类型可以表示的最大值为 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。如果选中此复选框,模块输出将在达到 127 时饱和。类似地,模块输出将在达到最小输出值 -128 时饱和。

不选中此复选框。

您需要优化所生成代码的效率。

您希望避免过度地指定信号超出范围时的处理方式。有关详细信息,请参阅信号范围错误故障排除

溢出会绕回到由数据类型表示的适当值。

int8(有符号 8 位整数)数据类型可以表示的最大值为 127。任何大于此最大值的模块运算结果都会导致 8 位整数溢出。清除该复选框时,软件会将导致溢出的值解释为 int8,这可能产生意外结果。例如,以 int8 表示的模块结果 130(二进制 1000 0010)为 -126。

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

编程用法

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

模块特性

数据类型

double | fixed point | half | integer | single

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

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

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

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

版本历史记录

在 R2010a 中推出