主要内容

Math Function

R2026b

执行数学函数

  • Math Function block

库:
Simulink / Math Operations
HDL Coder / Math Operations

描述

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

可以从 Math Function 模块中的函数参数列表中选择以下函数之一。

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

指数

eu

exp
log

自然对数

ln u

log
2^u

以 2 为底的幂

2u

2.^u
(请参见power)

10^u

以 10 为底的幂

10u

10.^u
(请参见 power)

log10

常用(以 10 为底)对数

log u

log10
magnitude^2

复数模量

|u|2

real(u).^2 + imag(u).^2
(请参见 real、imag 和 power)

square

2 次幂

u2

u.^2
(请参见 power)

pow

幂

  • 在有符号幂处于选中状态且输出信号类型设置为实数时,表达式为 sign(u)*|u|v。

  • 在有符号幂处于清除状态或输出信号类型设置为复数时,表达式为 uv。

  • 当输出信号类型设置为 auto 时,表达式取决于软件编译的复/实性类型。

power
conj

复共轭

ū

conj
使用精确法的 reciprocal

倒数

1/u

1./u
(请参见 rdivide)

使用牛顿-拉夫逊方法的 reciprocal

倒数

请参阅 牛顿-拉夫逊倒数算法方法。无
hypot

平方和的平方根

(u2+v2)0.5

hypot
rem

除后的余数

—

rem
mod

除后的模数

—

mod
transpose

转置

uT

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

hermitian

复共轭转置

uH

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

提示

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

该模块将函数应用于输入并输出结果。这些函数支持以下类型的运算。

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

是

是

不适用

log

是

是

不适用

2^u

是

是

不适用

10^u

是

是

不适用

log10

是

是

不适用

magnitude^2

是

是

不适用

square

是

是

不适用

pow

是

是

不适用

conj

是

是

不适用

使用精确法的 reciprocal

是

是

不适用

使用牛顿-拉夫逊方法的 reciprocal

是

是

不适用

hypot

是,对两个输入均执行

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

—

rem

是,对两个输入均执行

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

不适用

mod

是,对两个输入均执行

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

不适用

transpose

是

—

是

hermitian

是

—

是

函数名称和适当的输入端口数出现在模块上。

提示

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

牛顿-拉夫逊倒数算法方法

具有牛顿-拉夫逊算法方法的 reciprocal 函数使用迭代逼近来计算倒数。该函数求实数值函数根的逐次更好逼近。

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

f(x)=1x−a.

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

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

xi+1=xi−f(xi)f'(xi)=xi+(xi−axi2)=xi.(2−axi)

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

数据类型支持

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

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

exp

是

是

是

—

—

—

log

是

是

是

—

—

—

2^u

是

是

是

—

—

—

10^u

是

是

是

—

—

—

log10

是

是

是

—

—

—

magnitude^2

是

是

是

—

是

是

square

是

是

是

—

是

是

pow

是

是

是

—

—

—

conj

是

是

是

—

是

是

使用精确法的 reciprocal

是

是

是

—

是

是

使用牛顿-拉夫逊方法的 reciprocal(有关详细信息,请参阅输出)

是

是

—

—

是

是

hypot

是

是

是

—

—

—

rem

是

是

是

—

是

—

mod

是

是

是

—

是

—

transpose

是

是

是

是

是

是

hermitian

是

是

是

—

是

是

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

示例

端口

输入

全部展开

输入信号,指定为标量、向量或矩阵。受支持的模式同时接受实数和复数输入,但 reciprocal 除外,它不接受复数定点输入。请参阅描述。

依赖关系

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

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

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

依赖关系

要启用此端口,请将函数设置为 hypot、rem 或 mod。

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

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

输出

全部展开

输出信号,指定为标量、向量或矩阵。模块输出的维度取决于您选择的函数和输入的大小。模块输出是实数还是复数取决于您的输出信号类型选项。请参阅描述。

使用牛顿-拉夫逊方法的 reciprocal

使用牛顿-拉夫逊方法的 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

参数

全部展开

常设

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

依赖关系

将函数设置为 pow 会启用有符号幂参数。

编程用法

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

reciprocal 函数的算法方法,指定为完全或牛顿-拉夫逊。要使用牛顿-拉夫逊逼近方法计算倒数,请选择牛顿-拉夫逊。否则,请选择完全。

依赖关系

将函数设置为倒数会启用此参数。

编程用法

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

计算幂时(指定为开或关),考虑输入信号的符号。Math Function 仅在输出信号为实数时使用此参数。

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

  • off - 计算实际输入值的幂。如果第一个输入为负数,第二个输入不是整数,且输出信号为实数,则函数返回 NaN。

依赖关系

将函数设置为 pow 会启用此参数。

编程用法

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

将 Math Function 模块的输出信号类型指定为 auto、real 或 complex。

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

exp, log, 2^u, 10^u, 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'

牛顿-拉夫逊迭代次数,指定为标量。

依赖关系

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

  • 函数设置为倒数。

  • 算法方法设置为牛顿-拉夫逊。

编程用法

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

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

依赖关系

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

编程用法

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

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

信号属性

软件检查的输出范围的下限值。

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

提示

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

编程用法

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

参数: OutMin
值: '[]' (默认) | scalar in quotes

软件检查的输出范围的上限值。

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

提示

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

编程用法

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

参数: OutMax
值: '[]' (默认) | scalar in quotes

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

  • 继承数据类型的规则,例如继承: 通过反向传播继承

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

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

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

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

依赖关系

  • 要启用此参数,请将函数设置为 magnitude^2、方波或倒数。

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

编程用法

模块参数: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'

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

依赖关系

要启用此参数,请将函数设置为 magnitude^2、方波或倒数。

编程用法

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

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

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

依赖关系

要启用此参数,请将函数设置为 magnitude^2、方波或倒数。

编程用法

模块参数: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。

当您选中此复选框时,模块会将饱和应用于每个内部操作,而不仅仅应用于输出或结果。当代码生成过程检测到不可能发生溢出时,代码生成器不会生成饱和代码。

依赖关系

要启用此参数,请将函数设置为 magnitude^2、方波、conj、倒数或 hermitian。

编程用法

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

模块特性

数据类型

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

直接馈通

是

多维信号

是

可变大小信号

是

过零检测

否

扩展功能

全部展开

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

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

版本历史记录

在 R2006a 之前推出

全部展开