Main Content

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

Math Function

执行数学函数

  • 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
(请参见 realimagpower

square

2 次幂

u2

u.^2
(请参见 power

pow

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

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)=1xa.

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

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

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

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 除外,它不接受复数定点输入。

依存关系

要启用此端口,请将函数设置为 hypotremmod

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

数据类型: 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'

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

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

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

依存关系

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

编程用法

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

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

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

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

编程用法

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

信号属性

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

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

注意

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

编程用法

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

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

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

注意

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

编程用法

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

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

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

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

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

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

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

依存关系

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

  • 对于 magnitude^2square,当输入是小于单精度的浮点数据类型时,Inherit: 从内部规则继承输出数据类型取决于 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'

选择此参数可防止定点工具覆盖您在模块上指定的输出数据类型。有关详细信息,请参阅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 之前推出

全部展开