本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

1-D Lookup Table

逼近一维函数

  • 库:
  • Simulink / Lookup Tables

    HDL Coder / Lookup Tables

说明

支持的模块运算

1-D、2-D 和 n-D Lookup Table 模块计算一个函数的 N 变量采样表示形式

y=F(x1,x2,x3,...,xN)

其中函数 F 可以是经验函数。此模块通过查找或插入您使用模块参数定义的值表,将输入映射到输出值。该模块支持均一(常量)、线性(线性点-斜率)、Lagrange(线性 Lagrange)、最近、三次样条和 Akima 样条插值方法。您可以将这些方法应用于从 1 维到 30 维的表。

在下面的模块中,第一个输入标识第一个维度(行)断点,第二个输入标识第二个维度(列)断点,依此类推。

有关各种模块方向的端口顺序的说明,请参阅旋转或翻转后的端口位置

设置 Math and Data Types > Use algorithms optimized for row-major array layout 配置参数后,2-D 和 n-D Lookup Table 模块行为会从列优先更改为行优先。对于这些模块,列优先算法和行优先算法可能在输出计算的顺序上有所不同,从而可能导致数值略有不同。此功能需要 Simulink® Coder™ 或 Embedded Coder® 许可证。有关行优先支持的详细信息,请参阅Code Generation of Matrices and Arrays (Simulink Coder)。

指定断点和表数据

以下模块参数定义断点和表数据。

模块参数用途
Number of table dimensions 指定查找表的维度数。
Breakpoints 指定与查找表的每个维度对应的断点向量。
Table data 定义关联的一组输出值。

提示

均匀分布的断点可以使生成的代码无分割。有关详细信息,请参阅 fixpt_evenspace_cleanupIdentify questionable fixed-point operations (Embedded Coder)。

模块如何生成输出

n-D、1-D 和 2-D Lookup Table 模块通过基于输入值查找或估计表值来生成输出。

模块输入n-D Lookup Table 模块行为
与断点数据集中的索引值匹配输出位于行、列和更高维度断点的交点处的表值
与断点数据集中的索引值不匹配,但在范围内使用您选择的 Interpolation method 内插适当的表值
与断点数据集中的索引值不匹配,且不在范围内使用您选择的 Extrapolation method 外插输出值

执行等效操作的其他模块

您可以将 Interpolation Using Prelookup 模块与 Prelookup 模块一起使用,以执行等效于一个 n-D Lookup Table 模块的操作。这种模块组合可以提供更大的灵活性,从而为线性插值实现更高效的仿真性能。

当查找操作是不需要插值的数组访问时,请使用 Direct Lookup Table (n-D) 模块。例如,如果您有一个整数值 k,而您需要表的第 k 个元素 y = table(k),则不需要插值。

端口

输入

全部展开

u1 端口的实数值输入,通过查找您定义的值表或对其进行插值来映射到输出值。

示例: 0:10

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

输出

全部展开

通过查找或基于输入值估算表值生成的输出。

如果模块输入...n-D Lookup Table 模块...
与断点数据集中的索引值匹配输出位于行、列和更高维度断点的交点处的表值
与断点数据集中的索引值不匹配,但在范围内使用您选择的 Interpolation method 内插适当的表值
与断点数据集中的索引值不匹配,且不在范围内使用您选择的 Extrapolation method 外插输出值

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

参数

全部展开

Table and Breakpoints

输入查找表的维数。此参数确定:

  • 表的自变量数量以及模块输入的数量

  • 要指定的断点集的数量

要指定...执行此操作...

1、2、3 或 4

从下拉列表中选择值。

更高的表维度数

直接在字段中输入正整数。

此模块支持的最大表维度数为 30。

例如,大小为 M×N×... 的表表示维度 1 的大小是 M,维度 2 的大小是 N,依此类推。M 必须匹配第一个断点长度,N 必须匹配第二个断点长度,依此类推。

编程用法

模块参数:NumberOfTableDimensions
类型:字符向量
值:'1' | '2' | '3' | '4' | ... | 30
默认值:'1'

从列表中,选择:

  • Table and breakpoints” - 指定表数据和断点。选中此选项将启用下列参数:

    • Table data

    • Breakpoints specification

    • Breakpoints 1

    • Edit table and breakpoints

  • Lookup table object” - 使用现有查找表 (Simulink.LookupTable) 对象。选中此选项将启用 Name 字段和 Edit table and breakpoints 按钮。

编程用法

模块参数:DataSpecification
类型:字符向量
值:'Table and breakpoints' | 'Lookup table object'
默认值:'Table and breakpoints'

输入查找表 (Simulink.LookupTable) 对象的名称。如果 Simulink.LookupTable 对象不存在,请点击操作按钮 并选择 Create。新查找表对象的对应参数会自动用模块信息填充。

依存关系

要启用此参数,请将 Data specification 设置为 “Lookup table object”。

编程用法

模块参数:LookupTableObject
类型:字符向量
值:Simulink.LookupTable 对象的名称
默认值:''

输入输出值表。

在仿真期间,矩阵大小必须与 Number of table dimensions 参数定义的维度匹配。但是,在编辑模块图的过程中,您可以输入空矩阵(指定为 [])或者未定义的工作区变量。利用此方法,您可以推迟为表数据指定正确设置维度的矩阵,并继续编辑模块图。

依存关系

要启用此参数,请将 Data specification 设置为 “Table and breakpoints”。

编程用法

模块参数:Table
类型:字符向量
值:表值的向量
默认值:'tanh([-5:5])'

指定是以显式断点形式还是参数形式输入数据,以生成均匀分布的断点。

  • 要显式指定断点数据,请将此参数设置为 “Explicit values”,并在 Breakpoints 参数旁边的文本框中输入断点数据。

  • 要指定参数以生成均匀分布的断点,请将此参数设置为 “Even spacing”,并为断点数据的每个维度的 First pointSpacing 参数输入值。模块将根据表数据计算要生成的点数。

依存关系

要启用此参数,请将 Data specification 设置为 “Table and breakpoints”。

编程用法

模块参数:BreakpointsSpecification
类型:字符向量
值:'Explicit values' | 'Even spacing'
默认值:'Explicit values'

显式指定断点数据或者指定为均匀分布断点,具体取决于 Breakpoints specification 参数。

  • 如果您将 Breakpoints specification 设置为 “Explicit values”,请在每个 Breakpoints 行中输入与表数据的每个维度对应的断点集。对于每个维度,将断点指定为值严格单调递增的 1×n 或 n×1 向量。

  • 如果您将 Breakpoints specification 设置为 “Even spacing”,请在每个 Breakpoints 行中输入参数 First pointSpacing,以便在各自的维度生成均匀分布的断点。您的表数据决定平均分布的点数。

依存关系

要启用此参数,请将 Data specification 设置为 “Table and breakpoints”。

编程用法

模块参数:BreakpointsForDimension1
类型:字符向量
值:单调递增值的 1×n 或 n×1 向量
默认值:'[10, 22, 31]'

将均匀分布断点数据中的第一个点指定为实数值有限标量。当 Breakpoints specification 设置为 “Even spacing” 时,此参数可用。

依存关系

要启用此参数,请将 Data specification 设置为 “Table and breakpoints”,并将 Breakpoints specification 设置为 “Even spacing”。

编程用法

模块参数:BreakpointsForDimension1FirstPoint
类型:字符向量
值:实数值有限标量
默认值:'1'

指定均匀分布的断点数据中各点之间的距离。

依存关系

要启用此参数,请将 Data specification 设置为 “Table and breakpoints”,并将 Breakpoints specification 设置为 “Even spacing”。

编程用法

模块参数:BreakpointsForDimension1Spacing
类型:字符向量
值:正实数值有限标量
默认值:'1'

点击此按钮以打开 Lookup Table Editor。有关详细信息,请参阅 Simulink 文档中的编辑查找表

对于查找表对象,点击此按钮可以编辑该对象并为该对象保存新值。

Algorithm

Lookup method

当输入位于两个断点值之间时,模块将根据相邻断点内插输出值。有关插值方法的详细信息,请参阅内插方法

依存关系

  • 如果您选择 “Cubic spline”,则模块仅支持标量信号。其他插值方法支持非标量信号。

  • 如果选择 “Akima spline”,外插方法只能是 “Akima spline”。

    当设置为修正 Akima 插值方法时,此模块不支持:

    • 行优先数组布局和针对行优先数组布局优化的算法

    • 定标的双精度和定点数据类型

    • Simulink.LookupTable 对象

    • 选中配置参数 Code Generation > Interface > Support non-finite numbers 复选框时的代码生成

编程用法

模块参数:InterpMethod
类型:字符向量
值:'Linear point-slope' | 'Flat' | 'Nearest' | 'Linear Lagrange' | 'Cubic spline' | 'Akima spline'
默认值:'Linear point-slope'

选择 “Clip”、“Linear” 或 “Cubic spline”。有关详细信息,请参阅外插方法

如果外插方法是 “Linear”,则基于所选择的线性插值方法计算外插值。例如,如果插值方法是线性 Lagrange,则外插方法继承线性 Lagrange 方程以计算外插值。

依存关系

  • 要为 Extrapolation method 选择 “Cubic spline”,还必须为 Interpolation method 选择 “Cubic spline”。

  • 要为 Extrapolation method 选择 “Akima spline”,您还必须为 Interpolation method 选择 “Akima spline”。

编程用法

模块参数:ExtrapMethod
类型:字符向量
值:'Linear' | 'Clip' | 'Cubic spline' | 'Akima spline'
默认值:'Linear'

选择 Evenly spaced pointsLinear searchBinary search。每一种搜索方法在不同的情况下均有各自的速度优势:

  • 对于均匀分布的断点集(例如,10、20、30 等),您可以选择 Evenly spaced points 来计算表索引,以获得最佳速度。

    此算法仅使用断点集的前两个断点来确定其余点的偏移量和间距。

    注意

    当使用 Simulink.LookupTable 对象指定表数据且引用的 Simulink.LookupTable 对象的 Breakpoints Specification 参数设置为 “Even spacing” 时,请将 Index search method 设置为 “Evenly spaced points”。

  • 对于非均匀分布的断点集,请遵循以下原则:

    • 如果输入信号在时间步之间的变化不大,选择 Linear searchBegin index search using previous index result 可以获得最佳性能。

    • 如果输入信号在每个时间步中跳过的表间隔超过一个或两个,选择 Binary search 可以获得最佳性能。

对于严重依赖查找表的模型,选择非最佳索引搜索方法可能会导致性能下降。

注意

在以下情况下,生成的代码只存储第一个断点、间距和断点数量:

  • 断点数据不可调。

  • 索引搜索方法为 Evenly spaced points

编程用法

模块参数:IndexSearchMethod
类型:字符向量
值:'Binary search' | 'Evenly spaced points' | 'Linear search'
默认值:'Binary search'

如果您希望模块使用在上一个时间步中找到的索引开始搜索,请选中此复选框。对于相对于间隔大小而言变化缓慢的输入,启用此选项可以提高性能。否则,线性查找和二分查找方法可能需要更长的时间,尤其是对于大型断点集来说。

依存关系

要启用此参数,请将 Index search method 设置为 “Linear search” 或 “Binary search”。

编程用法

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

指定当输入超出范围时,是否生成警告或错误消息。选项包括:

  • None” - 不产生任何响应。

  • Warning” - 显示警告并继续进行仿真。

  • Error” - 终止仿真并显示错误。

编程用法

模块参数:DiagnosticForOutOfRangeInput
类型:字符向量
值:'None' | 'Warning' | 'Error'
默认值:'None'

使用此复选框,指定模块用来定位断点集的最后一个元素及其对应表值的索引约定。当输入等于或大于断点数据的最后一个元素时,此复选框才有意义。由于舍入原因,选中和清除此复选框可能会导致仿真与代码生成之间最后一个断点的结果不同。

复选框模块使用的索引区间比
选中 Table and Breakpoints 选项卡上的断点数据的最后一个元素 0
清除 Table and Breakpoints 选项卡上的断点数据的倒数第二个元素 1

假设输入 u 在断点集 bp 的范围内,区间比 f(在 0 f 1 范围内)按如下所示进行计算。

假定断点集为 [1 4 5],输入 u 为 5.5。如果您选中此复选框,索引则是最后一个元素 (5) 的索引,区间比为 0。如果您清除此复选框,索引则是倒数第二个元素 (4) 的索引,区间比为 1。

依存关系

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

  • Interpolation method 设置为 “Linear”。

  • Extrapolation method 设置为 “Clip”。

编程用法

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

Input settings

选中此复选框,从而对 N 维表只使用一个输入端口,此端口需要宽度为 n 个元素的信号。此选项可以有效减少包含许多查找表的模块图中的杂乱线条。

注意

如果您选中此复选框,模块上将出现一个带有 u 标签的输入端口。

编程用法

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

Code generation

指定是否包含代码以检查超出范围的输入值。

复选框结果何时使用

on

生成的代码中未包含用来检查超出范围的断点输入的条件语句。

当输入超出范围时,在 Accelerator 模式下生成的代码和仿真可能会发生未定义的行为。

提高代码效率

off

生成的代码包含用来检查超出范围的输入的条件语句。

适用于安全性至关重要的应用领域

如果您的输入没有超出范围,则可以选中 Remove protection against out-of-range index in generated code 复选框以提高代码效率。默认情况下,此复选框处于清除状态。对于安全性至关重要的应用,不要选中此复选框。要选中 Remove protection against out-of-range index in generated code 复选框,请先检查模型输入是否在范围内。例如:

  1. 清除 Remove protection against out-of-range index in generated code 复选框。

  2. Diagnostic for out-of-range input 参数设置为 Error

  3. 在 Normal 模式下进行模型仿真。

  4. 如果发生超出范围错误,请将它们更正到范围之内,然后再次运行仿真。

  5. 当仿真不再生成超出范围的输入错误时,选中 Remove protection against out-of-range index in generated code 复选框。

    注意

    如果选中了 Remove protection against out-of-range index in generated code 复选框而输入 kf 超出范围,在 Accelerator 模式下生成代码和进行仿真将发生未定义的行为。

根据您的具体应用,您可以运行以下 Model Advisor 检查,以验证此复选框的使用情形:

  • By Product > Embedded Coder > Identify lookup table blocks that generate expensive out-of-range checking code

  • By Product > Simulink Check > Modeling Standards > DO-178C/DO-331 Checks > Check usage of lookup table blocks

有关 Model Advisor 的详细信息,请参阅运行 Model Advisor 检查

编程用法

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

选中此复选框,以使生成的代码中具有可调表大小。利用此选项,您可以更改生成的代码中的查找表与断点数据的大小和值,无需重新生成或重新编译代码。您只能减小查找表和断点数据的大小。

依存关系

如果您将 Interpolation method 设置为 “Cubic spline”,此复选框将不可用。

编程用法

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

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

依存关系

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

编程用法

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

示例: [4 6] 用于表示 5×7 的表

使用从零开始的索引方法指定每个表维度的最大索引值。您可以使用以下数据类型,指定正整数标量或向量值:

  • 内置浮点类型:doublesingle

  • 内置整数类型:int8int16int32uint8uint16uint32

有效设定的示例包括:

  • [4 6] 用于表示 5×7 的表

  • [int8(2) int16(5) int32(9)] 用于表示 3×6×10 的表

  • Simulink.Parameter,在生成代码后此参数的值比表数据的维度少一。有关详细信息,请参阅在生成的代码中具有可调表大小

依存关系

要启用此参数,请选择 Support tunable table size in code generation。通过在生成的代码中调整此参数,提供新的表数据和断点以及调整后的参数值。

编程用法

模块参数:MaximumIndicesForEachDimension
类型:字符向量
值:正整数值的标量或向量
默认值:'[]'

数据类型

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

  • 继承数据类型的规则,例如 “Inherit:Same as output

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

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

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

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

提示

对于以下情况,指定与输出数据类型不同的表数据类型:

  • 存储表数据(使用的类型小于输出信号)的内存要求较低

  • 在具有不同输出数据类型的两个 n-D Lookup Table 模块之间共享预缩放的表数据

  • 在为具有不同输出数据类型的模块生成的代码中共享自定义存储表数据

编程用法

模块参数:TableDataTypeStr
类型:字符向量
'Inherit: Inherit from 'Table data'' | 'Inherit: Same as output' | 'double' | 'single' | '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 output'

指定表数据的最小值。默认值为 [](未指定)。

编程用法

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

指定表数据的最大值。默认值为 [](未指定)。

编程用法

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

指定一组断点数据的数据类型。可以将其设置为:

  • 继承数据类型的规则,例如 “Inherit:Same as corresponding input

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

  • 数据类型类的名称,例如枚举数据类型类

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

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

提示

  • 断点支持无序枚举数据。因此,线性查找也是无序的,这就提供了灵活性,但可能影响性能。搜索从断点中的第一个元素开始。

  • 如果选中 Begin index search using previous index result 复选框,则必须使用有序单调递增数据。这种排序可提高性能。

  • 对于枚举数据,Extrapolation method 必须是 Clip

  • 该模块不支持枚举数据的超出范围的输入。指定枚举数据时,请将整个枚举集包含在断点数据集中。例如,使用 enumeration 函数。

以下是对此模块使用枚举数据的限制:

  • 该模块不支持枚举数据的超出范围的输入。指定枚举数据时,请将整个枚举集包含在断点数据集中。例如,使用 enumeration 函数。

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

提示

对于以下情况,指定的断点数据类型可以不同于对应的输入数据类型:

  • 存储断点数据(使用的类型小于输出信号)的内存要求较低

  • 在具有不同输入数据类型的两个 n-D Lookup Table 模块之间共享预缩放的断点数据

  • 在为具有不同输入数据类型的模块生成的代码中共享自定义存储断点数据

编程用法

模块参数:BreakpointsForDimension1DataTypeStr | BreakpointsForDimension2DataTypeStr| ... | BreakpointsForDimension30DataTypeStr
类型:字符向量
'Inherit: Same as corresponding input' | 'Inherit: Inherit from 'Breakpoint data'' | 'double' | 'single' | '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 corresponding input'

指定一组断点数据可以具有的最小值。默认值为 [](未指定)。

编程用法

模块参数:BreakpointsForDimension1Min | BreakpointsForDimension2Min | ... | BreakpointsForDimension30Min
类型:字符向量
值:标量
默认值:'[]'

指定一组断点数据可以具有的最大值。默认值为 [](未指定)。

编程用法

模块参数:BreakpointsForDimension1Max | BreakpointsForDimension2Max | ... | BreakpointsForDimension30Max
类型:字符向量
值:标量
默认值:'[]'

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

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

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

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

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

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

编程用法

模块参数:FractionDataTypeStr
类型:字符向量
值:'Inherit: Inherit via internal rule' | 'double' | 'single' | 'fixdt(1,16,0)'|'<data type expression>'
默认值:'Inherit: Inherit via internal rule'

指定中间结果数据类型。可以将其设置为:

  • 继承数据类型的规则,例如 “Inherit:Same as output

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

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

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

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

提示

使用此参数为内部计算指定高于(或低于)表数据或输出数据的精度。

编程用法

模块参数:IntermediateResultsDataTypeStr
类型:字符向量
'Inherit: Inherit via internal rule' | 'Inherit: Same as 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: Same as output'

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

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

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

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

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

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

编程用法

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

指定模块输出的最小值。默认值为 [](未指定)。Simulink 软件使用此值执行:

编程用法

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

指定模块可以输出的最大值。默认值为 [](未指定)。Simulink 软件使用此值执行:

编程用法

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

指定进行中间计算的内部规则。选择 “Speed” 可以提高计算速度。但这样可能会损失精度,通常最多 2 位。

编程用法

模块参数:InternalRulePriority
类型:字符向量
值:'Speed' | 'Precision'
默认值:'Speed'

选中此项会要求所有输入具有相同的数据类型。

编程用法

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

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

编程用法

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

指定在仿真过程中或在执行从模型中生成的代码时发生的定点查找表计算的舍入模式。有关详细信息,请参阅Rounding (Fixed-Point Designer)。

此选项不影响模块参数值的舍入。Simulink 将此类值舍入到最接近的可表示整数值。要控制模块参数的舍入方法,请使用 MATLAB® 舍入函数在模块对话框上的编辑字段中输入表达式。

编程用法

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

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

选中此复选框 (on)。

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

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

一个有符号的 8 位整数的溢出可以饱和处理为 -128 或 127。

不选中此复选框 (off)。

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

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

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

数字 130 不适合一个有符号 8 位整数,因此绕回 -126。

提示

如果您将模型保存为 R2009a 或更早版本,此复选框设置将不起作用,且不会显示饱和代码。此行为保留了向后兼容性。

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

编程用法

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

模块特性

数据类型

double | enumerated | fixed point | integer | single

直接馈通

多维信号

可变大小信号

过零检测

详细信息

全部展开

扩展功能

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

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

在 R2011a 中推出