主要内容

使用预查找的插值

使用预计算的指数和分数值加速逼近n维函数

  • 库:
  • 金宝appSimulink /查找表

  • 使用预查找块插值

描述

使用预查找的插值块在与Prelookup块。Prelookup块计算指定其输入值的索引和间隔分数u与断点数据集相关。输入结果索引和分数值到插值使用预查找块插值n维表。这两个块有分布式算法。当组合在一起时,它们执行与n-D Lookup Table块中的集成算法相同的操作。然而,Prelookup和Interpolation Using Prelookup块提供了更大的灵活性,可以提供更有效的模拟和代码生成。有关更多信息,请参见绩效效率

金宝app支持的块操作

若要使用“使用预查找插值”块,请直接在对话框上指定一组表数据值或将值送入T输入端口。通常,这些表值对应于预查找块中指定的断点数据集。使用预查找块的插值通过根据从预查找块中提供的索引和间隔分数值查找或估计表值来生成输出。索引和区间分数的标签显示为k而且f在“使用预查找插值”块图标上。

当指标和区间分数的输入… 使用预查找块的插值…
映射到断点数据集中的值 输出行、列和高维断点交点处的表值
不映射到断点数据集中的值,但在范围内 方法插值适当的表值插值法你选择
没有映射到断点数据集中的值,并且超出范围 方法推断输出值外推法你选择

块如何插值表数据的子集

您可以使用子表选择维数参数指定仅对表数据的一个子集进行插值。若要激活此插值方式,请将该参数设置为正整数。此值定义要选择的维数,从默认列主算法的表数据的最高维数开始。因此,该值必须小于或等于表维数

对于行主算法,插值从表数据的第一个或最低维开始。

控件时,子表选择行为针对行主布局进行了优化数学和数据类型>使用针对行主数组布局优化的算法配置参数。

假设您的数据库中有3d表数据使用预查找的插值块。这种行为适用于column-major算法。

选择维度数量 集体行动 块的外观
0 插入整个表,但不激活子表选择 不会改变
1 插值前两个维度,并选择第三个维度 显示带有标签的输入端口s3用来选择和插入2-D表
2 插值第一个维度并选择第二个和第三个维度 显示两个带标签的输入端口s2而且s3用来选择和插入1-D表

子表选择使用从零开始的索引。有关内插表数据子集的示例,请参见使用预查找和插值块

对于没有子表选择的二维或n-D插值,列主算法和行主算法在输出计算的顺序上可能不同,导致数值结果略有不同。

港口

输入

全部展开

从零开始的索引,k,指定包含输入的间隔u对于表的第一个维度。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|不动点

分数,f,表示输入在区间内的归一化位置,k,表示表的第一个维度。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|不动点

从零开始的索引,k,指定包含输入的间隔un表的-th维。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|不动点

分数,f,表示输入在区间内的归一化位置,k,用于n表的-th维。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|不动点

的输入kf1端口包含索引k和分数f指定为总线对象。

依赖关系

要启用此端口,请选择需要索引和分数作为总线复选框。

可用的数量kf的值决定输入端口维数而且子表选择维数参数。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|不动点|公共汽车

的输入kfn端口包含索引k和分数f对于输入的第n维,指定为总线对象。

依赖关系

要启用此端口,请选择需要索引和分数作为总线复选框。

可用的数量kf的值决定输入端口维数而且子表选择维数参数。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|不动点|公共汽车

对于列主算法,块使用s的输入,年代+ 1,……年代n端口在子表中执行选择和插值。映射到th表的尺寸。n等于维数

对于行为主算法,块使用s1, s2,…,年代端口在子表中执行选择和插值。映射到th表的尺寸。等于子表选择维数

依赖关系

若要启用此端口,请使用子表选择维数必须是小于或等于的正整数维数

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|布尔|不动点|枚举|公共汽车

作为端口输入提供的表数据值T.通常,这些表值对应于预查找块中指定的断点数据集。使用预查找块的插值生成输出通过查找或估计表的值基于索引(k)和区间分数(f)来自预查找块的值。

依赖关系

若要启用此端口,请设置输入端口

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|不动点

输出

全部展开

n维函数的近似值,通过使用输入索引的值插值(或外推)表数据计算,k,和分数,f

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|不动点

参数

全部展开

主要

表数据

指定表数据必须具有的维数。的维数定义表自变量的数量。

指定… 这样做……

1 2 3 4

在下拉列表中选择。

更多的表维数

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

这个块支持的表维度的最大数量是30。金宝app

编程使用

块参数:NumberOfTableDimensions
类型:特征向量
价值观:'1' |' 2' |' 3' |'4' |…|“30”
默认值:' 2 '

选中此复选框可在总线中组合索引和分数输入。

要启用Prelookup类提供输入使用预查找的插值块,设置:

  • 输出选择指数和分数作为总线

  • 输出总线:<对象名称>,在那里<对象名称>必须是模型可访问的有效总线对象名称

不管这个复选框设置如何,选择端口总是在非总线模式下运行。

编程使用

块参数:RequireIndexFractionAsBus
类型:特征向量
价值观:'off' | 'on'
默认值:“关闭”

指定是直接输入表数据还是使用查找表对象。如果将此参数设置为:

  • 明确的价值观,而且价值参数在对话框中可见。

  • 查找表对象,的名字参数在对话框中可见。

编程使用

块参数:TableSpecification
类型:特征向量
价值观:显式值|查找表对象
默认值:“显式值”

指定是在对话框中输入表数据,还是从输入端口继承数据。如果你设置:

  • 对话框,在下面的文本框中输入表格数据价值

  • 输入端口,验证上游信号向表输入端口提供表数据

依赖关系

若要启用该参数,请设置规范明确的价值观

编程使用

块参数:TableSource
类型:特征向量
价值观:对话框|输入端口
默认值:“对话框”

将表数据指定为N-D数组,其中N是值维数参数。您可以编辑方框图而无需指定正确量纲的矩阵,只需输入空矩阵([])或未定义的工作区变量价值编辑字段。有关如何在MATLAB中构造多维数组的信息®,请参阅多维数组

如果你设置输入端口,验证上游信号是否向表提供数据T输入端口。表数据的大小必须匹配表维数.属性的表属性T输入端口。

若要使用“查找表编辑器”编辑查找表,请单击编辑(见编辑查找表).

依赖关系

若要启用此参数并在对话框上显式指定表值,必须设置规范明确的价值观而且对话框

编程使用

块参数:表格
类型:特征向量
价值观:标量、向量、矩阵或N-D数组
默认值:'sqrt([1:11]' * [1:11])'

的名称金宝app仿真软件。LookupTable对象。查找表对象引用Simulink金宝app®断点对象。如果一个金宝app仿真软件。LookupTable对象不存在,请单击操作按钮并选择创建.新的查找表对象的相应参数将自动填充块信息。

依赖关系

若要启用该参数,请设置规范查找表对象

编程使用

块参数:LookupTableObject
类型:特征向量
值:金宝app仿真软件。LookupTable对象
默认值:
算法

指定块用于插入表数据的方法。您可以选择线性点斜式最近的,或线性拉格朗日.看到插值方法获取更多信息。

编程使用

块参数:InterpMethod
类型:特征向量
价值观:“平坦”|“线性点斜”|“最近”|“线性拉格朗日”
默认值:“线性点斜式”

指定块用于推断位于断点数据集范围之外的所有输入的值的方法。您可以选择剪辑线性.看到外推方法获取更多信息。

如果外推法是线性,根据所选线性插值方法计算外推值。例如,如果插值方法为线性拉格朗日,则外推方法继承线性拉格朗日方程来计算外推值。

依赖关系

要启用外推法参数,设置插值法线性

不支持使用预查找块进行插值金宝app线性输入或输出信号指定整数或定点数据类型时的外推。

编程使用

块参数:ExtrapMethod
类型:特征向量
价值观:“剪辑”|“线性”
默认值:“线性”

指定索引(k)和区间分数(f的最后一个元素n-维表数据。索引值以零为基础。

如果输入索引等于或大于表中该维度的最后一个索引,则此复选框是相关的。由于四舍五入,选择并清除此复选框可能导致模拟和代码生成之间的最后一个索引的结果不同。

复选框 块的行为

返回表中维度的最后一个元素的值:

  • k索引对应维度中的最后一个表元素

  • f0

返回表中维度的最后一个元素的值:

  • k索引对应维度中倒数第二个表元素

  • f1

依赖关系

此复选框仅在以下情况下可见:

  • 插值法线性点斜式线性拉格朗日

  • 外推法剪辑

提示

当你选择有效的索引输入可能到达最后一个索引对于使用预查找的插值块,也必须选择对于大于或等于上限的输入,使用最后一个断点对所有Prelookup给它喂食的块。此操作允许块在访问断点和表数据集的最后一个元素时使用相同的索引约定。

编程使用

块参数:ValidIndexMayReachLast
类型:特征向量
价值观:'off' | 'on'
默认值:“关闭”

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

  • 没有一个-没有回应。

  • 警告-显示警告并继续模拟。

  • 错误-终止模拟并显示错误。

编程使用

块参数:DiagnosticForOutOfRangeInput
类型:特征向量
价值观:' | '警告' | '错误'
默认值:“没有”

指定块用于计算输出的子表的维数。请遵循以下规则:

  • 若要启用子表选择,请输入正整数。

    该整数必须小于或等于表维数

  • 若要禁用子表选择,请输入0插值整个表。

控件时,子表选择行为针对行主布局进行了优化数学和数据类型>使用针对行主数组布局优化的算法配置参数。

有关更多信息,请参见块如何插值表数据的子集

编程使用

块参数:NumSelectionDims
类型:特征向量
价值观:'0' | '1' | '2' | '3' | '4' |…|表维度数
默认值:' 0 '
代码生成
复选框 结果 何时使用

生成的代码不包括检查超出范围的索引输入的条件语句。

当输入kf超出范围,则可能导致生成的代码出现未定义的行为。

为了提高代码效率

生成的代码包括条件语句,用于检查超出范围的索引输入。

安全关键应用

如果您的输入没有超出范围,您可以选择在生成的代码中删除对超出范围索引的保护复选框表示代码效率。默认情况下,该复选框被清除。对于安全性较高的应用,请不要选中此复选框。如果要选择在生成的代码中删除对超出范围索引的保护复选框,首先检查您的模型输入是否在范围内。例如:

  1. 清除在生成的代码中删除对超出范围索引的保护复选框。

  2. 设置诊断超出范围的输入参数错误

  3. 在正常模式下模拟模型。

  4. 如果有超出范围的错误,将它们修复到范围内并再次运行模拟。

  5. 当模拟不再产生超出范围的输入错误时,选择在生成的代码中删除对超出范围索引的保护复选框。

    请注意

    当你选择在生成的代码中删除对超出范围索引的保护复选框和输入kf超出范围,则生成的代码的行为未定义。

根据您的应用程序,您可以运行以下Model Advisor检查来验证此复选框的使用:

  • 通过产品>嵌入式编码器>识别生成昂贵的范围外检查代码的查找表块

  • 通过产品>金宝app仿真软件检查>建模标准>- 331 - 178 - c /做检查吗>检查查找表块的使用情况

有关Model Advisor的更多信息,请参见运行Model Advisor检查

此外,要确定选择此复选框是否安全,如果您有金宝appSimulink设计验证器™许可证,考虑使用检测块输入范围违反(金宝appSimulink Design Verifier)检查。

当下列情况之一为真时,此复选框对生成的代码没有影响:

  • Prelookup块将索引值提供给使用预查找的插值块。

    因为索引值来自Prelookup块始终有效,不需要检查代码。

  • 输入的数据类型k将数据限制为有效的索引值。

    例如,无符号整数数据类型保证索引值为非负。因此,的无符号输入值k不要求负数的检查代码。

编程使用

块参数:RemoveProtectionIndex
类型:特征向量
价值观:'off' | 'on'
默认值:“关闭”

将采样时间指定为其他值-1.有关更多信息,请参见指定采样时间

依赖关系

此参数不可见,除非显式地设置为其他值-1.要了解更多信息,请参见不建议采样时间的块

编程使用

块参数:SampleTime
类型:字符串标量或字符向量
默认值:“1”

数据类型

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

  • 继承数据类型的规则,例如,Inherit:与output相同

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

  • 数据类型对象的名称,例如a金宝app仿真软件。Nu米ericType对象

  • 求值为数据类型的表达式,例如,fixdt (1 16 0)

单击显示数据类型助手按钮显示数据类型助手,帮助您设置表数据类型。

提示

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

  • 用于存储使用比输出信号更小类型的表数据的较低内存需求

  • 在两个表之间共享预伸缩表数据使用预查找的插值具有不同输出数据类型的块

  • 共享自定义存储表数据金宝app仿真软件编码器™为具有不同输出数据类型的块生成代码

编程使用

块参数:TableDataTypeStr
类型:特征向量
价值观:'继承:从表数据继承' | '继承:同输出' | '双' | '单' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<数据类型表达式>'
默认值:“继承:与输入相同”

将表数据的最小值指定为有限、实数、双精度、标量。默认值为[](不明)。

编程使用

块参数:TableMin
类型:特征向量
价值观:标量
默认值:“[]”

将表数据的最大值指定为有限、实数、双精度和标量。默认值为[](不明)。

编程使用

块参数:TableMax
类型:特征向量
价值观:标量
默认值:“[]”

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

  • 继承数据类型的规则,例如,Inherit:与output相同

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

  • 数据类型对象的名称,例如a金宝app仿真软件。Nu米ericType对象

  • 求值为数据类型的表达式,例如,fixdt (1 16 0)

单击显示数据类型助手按钮显示数据类型助手,它可以帮助您设置数据类型属性。有关更多信息,请参见使用数据类型助手指定数据类型

提示

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

编程使用

块参数:IntermediateResultsDataTypeStr
类型:特征向量
价值观:继承:通过内部规则继承' | '继承:与输出' | '双' | '单' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<数据类型表达式>'
默认值:“继承:与输入相同”

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

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

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

  • 数据类型对象的名称,例如a金宝app仿真软件。Nu米ericType对象

  • 求值为数据类型的表达式,例如,fixdt (1 16 0)

单击显示数据类型助手按钮显示数据类型助手,帮助您设置输出数据类型。

看到控制信号的数据类型获取更多信息。

编程使用

块参数:OutDataTypeStr
类型:特征向量
价值观:'继承:通过反向传播继承' | '继承:从表数据继承' | '双' | '单' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | 'fixdt(1,16,2^0,0)' | '<数据类型表达式>'
默认值:“继承:从表数据继承”

指定块作为有限实值标量输出的最小值。默认值为[](不明)。金宝appSimulink软件使用这个值执行:

编程使用

块参数:OutMin
类型:特征向量
价值观:标量
默认值:“[]”

指定块应输出为有限实值标量的最大值。默认值为[](不明)。金宝appSimulink软件使用这个值执行:

编程使用

块参数:OutMax
类型:特征向量
价值观:标量
默认值:“[]”

指定用于中间计算的内部规则。选择速度为了更快的计算。如果您这样做,可能会发生精度损失,通常高达2位。

编程使用

块参数:InternalRulePriority
类型:特征向量
价值观:“速度”|“精度”
默认值:“速度”

选择此参数可防止定点工具覆盖在此块上指定的数据类型。有关更多信息,请参见锁定输出数据类型设置(定点设计师)

编程使用

块参数:LockScale
类型:特征向量
价值观:'off' | 'on'
默认值:“关闭”

为定点操作指定舍入模式。有关更多信息,请参见舍入(定点设计师)

块参数总是舍入到最接近的可表示值。若要控制块参数的舍入,请在mask字段中使用MATLAB舍入函数输入表达式。

编程使用

块参数:RndMeth
类型:特征向量
价值观:“天花板”|“收敛”|“地板”|“最近”|“圆”|“最简单”|“零”
默认值:“地板”

指定溢出是饱和还是包裹。

行动 基本原理 对溢出的影响 例子

选中此复选框().

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

溢出饱和到数据类型可以表示的最小值或最大值。

的最大值int8(有符号,8位整数)的数据类型可以表示为127。任何大于该最大值的块操作结果都会导致8位整数溢出。选中复选框后,块输出的饱和值为127。类似地,块输出在最小输出值-128处饱和。

不要选中此复选框().

您希望优化生成代码的效率。

您希望避免过度指定块如何处理超出范围的信号。有关更多信息,请参见排除信号范围错误

溢出包装为由数据类型表示的适当值。

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

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

编程使用

块参数:SaturateOnIntegerOverflow
类型:特征向量
价值观:'off' | 'on'
默认值:“关闭”

块特征

数据类型

|不动点|整数|

直接引线

是的

多维信号

是的

适应信号

没有

讨论二阶导数过零检测

没有

扩展功能

C/ c++代码生成
使用Simulink®Coder™生成C和c++代码。金宝app

定点转换
使用定点设计器设计和模拟定点系统。

版本历史

在R2006b中引入