主要内容

插值使用Prelookup

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

  • 库:
  • 金宝appSimulink /查找表

  • 使用预查找块进行插值

描述

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

金宝app支持块操作

要使用Prelookup块,您可以直接在对话框中指定一组表数据值,或者将值输入T输入端口。通常,这些表值对应于Prelookup块中指定的断点数据集。使用预查找的插值块通过根据预查找块提供的索引和区间分数值查找或估计表值来生成输出。索引和区间分数的标签显示为kf在插值使用预查找块图标。

当输入指数和区间分数时… The Interpolation Using Prelookup block…
映射到断点数据集中的值 在行、列和更高维度断点的交集处输出表值
不映射到断点数据集中的值,但在范围内 属性插入适当的表值插值法你选择
没有映射到断点数据集中的值,并且超出了范围 属性推断输出值外推法你选择

块如何插值表数据的子集

你可以使用子表选择维数参数指定插值只发生在表数据的一个子集上。要激活该插补模式,请将该参数设置为正整数。这个值定义要选择的维度数,从默认列主算法的表数据的最高维度开始。因此,该值必须小于或等于表维数

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

对于非零值,子表选择行为在选择行主布局时被优化数学和数据类型>使用优化的行主阵列布局算法配置参数。

假设您的插值使用Prelookup块。这种行为适用于列-主算法。

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

子表选择使用基于零的索引。对于插入表数据子集的示例,请键入sldemo_bpcheck在MATLAB®命令提示符。

对于不选择子表的2d或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.通常,这些表值对应于Prelookup块中指定的断点数据集。Using Prelookup块通过根据索引查找或估计表值生成输出(k)和区间分数(f)值由Prelookup块提供。

依赖关系

要启用该端口,请设置输入端口

数据类型:||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块来提供输入插值使用Prelookup块,设置:

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

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

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

编程使用

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

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

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

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

编程使用

块参数: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
类型:特征向量
价值观:'Flat' | 'Linear point-slope' | 'Nearest' | 'Linear Lagrange'
默认值:“线性点斜式”

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

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

依赖关系

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

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

编程使用

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

指定索引的块输入方式(k)和区间分数(f的最后一个元素n维表数据。索引值是基于零的。

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

复选框 块的行为

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

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

  • f0

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

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

  • f1

依赖关系

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

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

  • 外推法剪辑

提示

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

编程使用

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

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

  • 没有一个-不产生响应。

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

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

编程使用

块参数:DiagnosticForOutOfRangeInput
类型:特征向量
价值观:'无' | 'Warning' | 'Error'
默认值:“没有”

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

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

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

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

对于非零值,子表选择行为在选择行主布局时被优化数学和数据类型>使用优化的行主阵列布局算法配置参数。

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

编程使用

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

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

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

代码效率

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

对于安全性至关重要的应用程序

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

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

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

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

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

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

    请注意

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

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

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

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

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

另外,要确定是否安全选择此复选框,如果有金宝app仿真软件设计校验™许可证,考虑使用检测块输入范围违规(金宝app仿真软件设计验证器)检查。

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

  • Prelookup块将索引值提供给插值使用Prelookup块。

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

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

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

编程使用

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

将样本时间指定为-1以外的值。有关更多信息,请参见指定样品时间

依赖关系

这个参数是不可见的,除非它被显式地设置为非-1.想要了解更多,请看不推荐采样时间的块

编程使用

块参数:SampleTime
类型:特征向量
价值观:标量或矢量
默认值:' 1 '

数据类型

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

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

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

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

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

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

提示

在这些情况下,指定与输出数据类型不同的表数据类型:

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

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

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

编程使用

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

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

编程使用

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

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

编程使用

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

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

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

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

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

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

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

提示

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

编程使用

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

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

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

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

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

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

单击显示数据类型助手按钮来显示数据类型的助理,它可以帮助您设置输出数据类型。

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

编程使用

块参数:OutDataTypeStr
类型:特征向量
价值观:继承:从表数据中继承| 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | 'fixdt(1,16,2^0,0)' | '<数据类型表达式>'
默认值:'Inherit:从表数据继承'

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

编程使用

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

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

编程使用

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

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

编程使用

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

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

编程使用

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

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

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

编程使用

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

指定溢出是否饱和或缠绕。

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

选择此复选框().

您的模型可能存在溢出,您希望在生成的代码中显示饱和保护。

溢出会饱和到数据类型所能表示的最小值或最大值。

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

不选择此复选框().

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

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

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

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

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

编程使用

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

块特征

数据类型

|不动点|整数|

直接引线

是的

多维信号

是的

适应信号

没有

讨论二阶导数过零检测

没有

扩展功能

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

定点转换
使用fixed-point Designer™设计和模拟定点系统。

介绍了R2006b