Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

Math Function

执行数学函数

  • 库:
  • Simulink / Math Operations

    HDL Coder / Math Operations

  • Math Function block

说明

Math Function 模块可执行许多常见的数学函数。

提示

要执行平方根计算,请使用 Sqrt 模块。

可以从 Function 下拉列表中选择以下函数之一。

函数说明数学表达式 MATLAB® 等效函数
exp

指数

eu

exp
log

自然对数

ln u

log
10^u

以 10 为底的幂

10u

10.^u
(请参见 power

log10

常用(以 10 为底)对数

log u

log10
magnitude^2

复数模量

|u|2

real(u).^2 + imag(u).^2
(请参见 realimagpower

square

2 次幂

u2

u.^2
(请参见 power

pow

sign(u)*|u|v(默认值,仅适用于偶数阶根)或 uv

power
conj

复共轭

ū

conj
使用 Exact 方法的 reciprocal

倒数

1/u

1./u
(请参见 rdivide

使用 Newton-Raphson 方法的 reciprocal

倒数

请参阅 Newton-Raphson 倒数算法方法
hypot

平方和的平方根

(u2+v2)0.5

hypot
rem

除后的余数

rem
mod

除后的模数

mod
transpose

转置

uT

u.'
(请参见数组与矩阵运算

hermitian

复共轭转置

uH

u'
(请参见数组与矩阵运算

模块输出是对一个或多个输入执行函数运算的结果。这些函数支持以下类型的运算。

函数标量运算按元素的向量和矩阵运算向量和矩阵运算
exp

log

10^u

log10

magnitude^2

square

pow

conj

使用 Exact 方法的 reciprocal

使用 Newton-Raphson 方法的 reciprocal

hypot

是,对两个输入均执行

是,对两个输入均执行(大小相同的两个向量或两个矩阵、一个标量和一个向量,或者一个标量和一个矩阵)

rem

是,对两个输入均执行

是,对两个输入均执行(大小相同的两个向量或两个矩阵、一个标量和一个向量,或者一个标量和一个矩阵)

mod

是,对两个输入均执行

是,对两个输入均执行(大小相同的两个向量或两个矩阵、一个标量和一个向量,或者一个标量和一个矩阵)

transpose

hermitian

函数的名称显示在模块上。相应的输入端口数会自动显示。

提示

当需要向量或矩阵输出时,使用 Math Function 模块。

Newton-Raphson 倒数算法方法

使用 Newton-Raphson 算法方法的 reciprocal 函数使用 Newton-Raphson 逼近方法计算倒数。该函数使用递归逼近来求实数值函数根的更佳逼近。

实数 a 的倒数定义为函数的零值:

f(x)=1xa

Simulink® 选择 0<x0<2a 范围内的一个初始估计值,因为这是函数的收敛域。

要连续计算函数的根,请指定 Number of iterations 参数。该过程按如下方式重复执行:

xi+1=xif(xi)f'(xi)=xi+(xiaxi2)=xi.(2axi)

f'(x) 是函数 f(x) 的导数。

数据类型支持

下表显示了该模块的每个函数可以支持的输入数据类型。

函数单精度双精度半精度*布尔内置整数定点

exp

log

10^u

log10

magnitude^2

square

pow

conj

使用 Exact 方法的 reciprocal

使用 Newton-Raphson 方法的 reciprocal

请参阅输出

hypot

rem

mod

transpose

hermitian

有关半精度算术运算的详细信息,请参阅 The Half-Precision Data Type in Simulink (Fixed-Point Designer)

端口

输入

全部展开

输入信号,指定为标量、向量或矩阵。所有受支持的模式均接受实数和复数输入,但 reciprocal 除外,它不接受复数定点输入。有关详细信息,请参阅说明

依存关系

此模块的数据类型支持取决于您选择的 Function 和输入的大小。有关详细信息,请参阅数据类型支持

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

输入信号,指定为标量、向量或矩阵。所有受支持的模式均接受实数和复数输入,但 reciprocal 除外,它不接受复数定点输入。

依存关系

要启用此端口,请将 Function 设置为 “hypot”、“rem” 或 “mod”。

此模块的数据类型支持取决于您选择的 Function 和输入的大小。有关详细信息,请参阅数据类型支持

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

输出

全部展开

输出信号,指定为标量、向量或矩阵。模块输出的维度取决于您选择的 Function 和输入的大小。模块输出是实数还是复数取决于您的 Output signal type 选项。有关详细信息,请参阅说明

使用 Newton-Raphson 方法的 reciprocal

使用 Newton-Raphson 方法的 reciprocal 的输出数据类型取决于输入数据类型:

输入数据类型输出数据类型
单精度单精度
双精度双精度
内置整数内置整数
内置定点内置定点

fi (value, 0, word_length, fraction_length)

fi (value, 0, word_length, word_length–fraction_length–1)

fi (value, 1, word_length, fraction_length)

fi (value, 1, word_length, word_length–fraction_length–2)

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

参数

全部展开

Main

指定数学函数。有关此参数的选项的详细信息,请参阅说明

依存关系

Function 设置为 “pow” 会启用 Signed power 参数。

编程用法

模块参数:Operator
类型:字符向量
值:'exp' | 'log' | '10^u' | 'log10' | 'magnitude^2' | 'square' | 'pow' | 'conj' | 'reciprocal' | 'hypot' | 'rem' | 'mod' | 'transpose' | 'hermitian'
默认值:'exp'

reciprocal 函数的算法方法,指定为 “Exact” 或 “Newton-Raphson”。要使用 Newton-Raphson 逼近方法计算倒数,请选择 “Newton-Raphson”。否则,请选择 “Exact”。

依存关系

Function 设置为 “reciprocal” 会启用此参数。

编程用法

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

在计算幂时考虑输入信号的符号,指定为 on 或 off。此参数仅适用于偶数阶根,如 u1/2、u1/4 等。

  • on - 通过将输入信号绝对值乘以输入信号的符号来计算幂。

  • off - 计算实际输入值的幂。如果第一个输入为负值,第二个输入为偶数阶根,则返回 nan

依存关系

Function 设置为 “pow” 会启用此参数。

编程用法

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

将 Math Function 模块的输出信号类型指定为 autorealcomplex

函数输入信号类型输出信号类型
AutoRealComplex

exp, log, 10u, log10, square, pow, reciprocal, conjugate, transpose, hermitian

real

complex

real

complex

real

error

complex

complex

magnitude squared

real

complex

real

real

real

real

complex

complex

hypot, rem, mod

real

complex

real

error

real

error

complex

error

编程用法

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

Newton-Raphson 迭代次数,指定为标量。

依存关系

要启用此参数,请进行如下设置:

  • Function 设置为 “reciprocal”。

  • Algorithm method 设置为 “Newton-Raphson”。

编程用法

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

将采样时间指定为 -1 以外的值。有关详细信息,请参阅指定采样时间

依存关系

此参数不可见,除非将其显式设置为 -1 以外的值。要了解详细信息,请参阅不建议设置采样时间的模块

编程用法

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

Signal Attributes

Simulink 检查的输出范围的下限值。

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

注意

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

编程用法

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

Simulink 检查的输出范围的上限值。

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

注意

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

编程用法

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

指定输出数据类型。可以将其设置为:

  • 继承数据类型的规则,例如 “Inherit:Inherit via back propagation

  • 内置数据类型的名称,例如 single

  • 数据类型对象的名称,例如 Simulink.NumericType 对象

  • 计算结果为数据类型的表达式,例如 fixdt(1,16,0)

点击 Show data type assistant 按钮 以显示 Data Type Assistant,帮助您设置数据类型属性。有关详细信息,请参阅使用 Data Type Assistant 指定数据类型

依存关系

  • 要启用此参数,请将 Function 设置为 “magnitude^2”、“square” 或 “reciprocal”。

  • 对于 “magnitude^2” 和 “square”,当输入是小于单精度的浮点数据类型时,“Inherit:Inherit via internal rule” 输出数据类型取决于 Inherit floating-point output type smaller than single precision 配置参数的设置。当编码数据类型所需的位数小于编码单精度数据类型所需的 32 位时,数据类型小于单精度。例如,halfint16 小于单精度。

编程用法

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

选择此参数可防止定点工具覆盖您在模块上指定的 Output 数据类型。有关详细信息,请参阅Use Lock Output Data Type Setting (Fixed-Point Designer)

依存关系

要启用此参数,请将 Function 设置为 “magnitude^2”、“square” 或 “reciprocal”。

编程用法

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

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

模块参数始终舍入到最接近的可表示值。要控制模块参数的舍入方法,请在封装字段中使用 MATLAB 舍入函数输入表达式。

依存关系

要启用此参数,请将 Function 设置为 “magnitude^2”、“square” 或 “reciprocal”。

编程用法

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

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

选中此复选框。

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

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

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

不选中此复选框。

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

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

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

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

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

依存关系

要启用此参数,请将 Function 设置为 “magnitude^2”、“square”、“conj”、“reciprocal” 或 “hermitian”。

编程用法

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

模块特性

数据类型

Boolean | double | fixed point | half | integer | single

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

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

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

在 R2006a 之前推出