使用预查找的插值
使用预计算的指数和分数值加速逼近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插值,列主算法和行主算法在输出计算的顺序上可能不同,导致数值结果略有不同。
港口
输入
k1
——指数,k
,表示表的第一个维度
标量|向量|矩阵
从零开始的索引,k
,指定包含输入的间隔u
对于表的第一个维度。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|不动点
f1
——分数,f
,表示表的第一个维度
标量|向量|矩阵
分数,f
,表示输入在区间内的归一化位置,k
,表示表的第一个维度。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|不动点
kn
——指数,k
,用于n
表的-th维
标量|向量|矩阵
从零开始的索引,k
,指定包含输入的间隔u
为n
表的-th维。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|不动点
fn
——分数,f
,用于n
表的-th维
标量|向量|矩阵
分数,f
,表示输入在区间内的归一化位置,k
,用于n
表的-th维。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|不动点
kf1
-输入包含索引k
和分数f
总线对象
的输入kf1端口包含索引k
和分数f
指定为总线对象。
依赖关系
要启用此端口,请选择需要索引和分数作为总线复选框。
可用的数量kf
的值决定输入端口维数而且子表选择维数参数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|不动点
|公共汽车
kfn
-输入包含索引k
和分数f
总线对象
的输入kfn端口包含索引k
和分数f
对于输入的第n维,指定为总线对象。
依赖关系
要启用此端口,请选择需要索引和分数作为总线复选框。
可用的数量kf的值决定输入端口维数而且子表选择维数参数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|不动点
|公共汽车
sm
-选择并插入表数据的子集
标量|向量|矩阵
对于列主算法,块使用s的输入米,年代米+ 1,……年代n端口在子表中执行选择和插值。米
映射到米th表的尺寸。n等于维数.
对于行为主算法,块使用s1, s2,…,年代米端口在子表中执行选择和插值。米
映射到米th表的尺寸。米等于子表选择维数.
依赖关系
若要启用此端口,请使用子表选择维数必须是小于或等于的正整数维数.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|布尔
|不动点
|枚举
|公共汽车
T
-表格数据
标量|向量|矩阵| n-d数组
作为端口输入提供的表数据值T.通常,这些表值对应于预查找块中指定的断点数据集。使用预查找块的插值生成输出通过查找或估计表的值基于索引(k
)和区间分数(f
)来自预查找块的值。
依赖关系
若要启用此端口,请设置源来输入端口
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|不动点
输出
Port_1
- n维函数的近似
标量|向量|矩阵
n维函数的近似值,通过使用输入索引的值插值(或外推)表数据计算,k
,和分数,f
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|不动点
参数
主要
表数据维数
—表数据维数
2
(默认)|整数,取值范围为1 ~ 30
指定表数据必须具有的维数。的维数定义表自变量的数量。
指定… | 这样做…… |
---|---|
1 2 3 4 |
在下拉列表中选择。 |
更多的表维数 |
直接在字段中输入正整数。 这个块支持的表维度的最大数量是30。金宝app |
编程使用
块参数:NumberOfTableDimensions |
类型:特征向量 |
价值观:'1' |' 2' |' 3' |'4' |…|“30” |
默认值:' 2 ' |
要求指数和分数作为总线
-索引和分数输入可以在总线中组合
从
(默认)|在
选中此复选框可在总线中组合索引和分数输入。
要启用Prelookup类提供输入使用预查找的插值块,设置:
输出选择来
指数和分数作为总线
输出来
总线:<对象名称>
,在那里<对象名称>
必须是模型可访问的有效总线对象名称
不管这个复选框设置如何,选择端口总是在非总线模式下运行。
编程使用
块参数:RequireIndexFractionAsBus |
类型:特征向量 |
价值观:'off' | 'on' |
默认值:“关闭” |
规范
—选择表格数据的输入方式
明确的价值观
(默认)|查找表对象
指定是直接输入表数据还是使用查找表对象。如果将此参数设置为:
明确的价值观
,源而且价值参数在对话框中可见。查找表对象
,的名字参数在对话框中可见。
编程使用
块参数:TableSpecification |
类型:特征向量 |
价值观:显式值|查找表对象 |
默认值:“显式值” |
源
-表数据的来源
对话框
(默认)|输入端口
指定是在对话框中输入表数据,还是从输入端口继承数据。如果你设置源:
对话框
,在下面的文本框中输入表格数据价值输入端口
,验证上游信号向表输入端口提供表数据
依赖关系
若要启用该参数,请设置规范来明确的价值观
.
编程使用
块参数:TableSource |
类型:特征向量 |
价值观:对话框|输入端口 |
默认值:“对话框” |
价值
—指定表数据值
√([1:11]' * [1:11])
(默认)|多维数组表数据
将表数据指定为N
-D数组,其中N
是值维数参数。您可以编辑方框图而无需指定正确量纲的矩阵,只需输入空矩阵([]
)或未定义的工作区变量价值编辑字段。有关如何在MATLAB中构造多维数组的信息®,请参阅多维数组.
如果你设置源来输入端口
,验证上游信号是否向表提供数据T输入端口。表数据的大小必须匹配表维数.属性的表属性T输入端口。
若要使用“查找表编辑器”编辑查找表,请单击编辑(见编辑查找表).
依赖关系
若要启用此参数并在对话框上显式指定表值,必须设置规范来明确的价值观
而且源来对话框
.
编程使用
块参数:表格 |
类型:特征向量 |
价值观:标量、向量、矩阵或N-D数组 |
默认值:'sqrt([1:11]' * [1:11])' |
的名字
-用户名金宝app仿真软件。LookupTable
对象
金宝app仿真软件。LookupTable对象
的名称金宝app仿真软件。LookupTable
对象。查找表对象引用Simulink金宝app®断点对象。如果一个金宝app仿真软件。LookupTable
对象不存在,请单击操作按钮并选择创建.新的查找表对象的相应参数将自动填充块信息。
依赖关系
若要启用该参数,请设置规范来查找表对象
.
编程使用
块参数:LookupTableObject |
类型:特征向量 |
值:金宝app仿真软件。LookupTable对象 |
默认值:” |
插值法
——选择线性点斜式
,平
,最近的
,或线性拉格朗日
线性点斜式
(默认)|最近的
|平
|线性拉格朗日
指定块用于插入表数据的方法。您可以选择线性点斜式
,平
,最近的
,或线性拉格朗日
.看到插值方法获取更多信息。
编程使用
块参数:InterpMethod |
类型:特征向量 |
价值观:“平坦”|“线性点斜”|“最近”|“线性拉格朗日” |
默认值:“线性点斜式” |
外推法
-处理超出断点数据集范围的输入的方法
线性
(默认)|剪辑
指定块用于推断位于断点数据集范围之外的所有输入的值的方法。您可以选择剪辑
或线性
.看到外推方法获取更多信息。
如果外推法是线性
,根据所选线性插值方法计算外推值。例如,如果插值方法为线性拉格朗日,则外推方法继承线性拉格朗日方程来计算外推值。
依赖关系
要启用外推法参数,设置插值法来线性
.
不支持使用预查找块进行插值金宝app线性
输入或输出信号指定整数或定点数据类型时的外推。
编程使用
块参数:ExtrapMethod |
类型:特征向量 |
价值观:“剪辑”|“线性” |
默认值:“线性” |
有效的索引输入可能到达最后一个索引
-允许输入访问表数据的最后一个元素
从
(默认)|在
指定索引(k
)和区间分数(f
的最后一个元素n-维表数据。索引值以零为基础。
如果输入索引等于或大于表中该维度的最后一个索引,则此复选框是相关的。由于四舍五入,选择并清除此复选框可能导致模拟和代码生成之间的最后一个索引的结果不同。
复选框 | 块的行为 |
---|---|
|
返回表中维度的最后一个元素的值:
|
|
返回表中维度的最后一个元素的值:
|
依赖关系
此复选框仅在以下情况下可见:
插值法是
线性点斜式
或线性拉格朗日
外推法是
剪辑
提示
当你选择有效的索引输入可能到达最后一个索引对于使用预查找的插值块,也必须选择对于大于或等于上限的输入,使用最后一个断点对所有Prelookup给它喂食的块。此操作允许块在访问断点和表数据集的最后一个元素时使用相同的索引约定。
编程使用
块参数:ValidIndexMayReachLast |
类型:特征向量 |
价值观:'off' | 'on' |
默认值:“关闭” |
诊断超出范围的输入
-当输入超出范围时阻止动作
没有一个
(默认)|警告
|错误
指定当输入超出范围时是否产生警告或错误。选项包括:
没有一个
-没有回应。警告
-显示警告并继续模拟。错误
-终止模拟并显示错误。
编程使用
块参数:DiagnosticForOutOfRangeInput |
类型:特征向量 |
价值观:' | '警告' | '错误' |
默认值:“没有” |
子表选择维数
-输出计算子表的维数
0
(默认)|正整数,小于或等于表维数
指定块用于计算输出的子表的维数。请遵循以下规则:
若要启用子表选择,请输入正整数。
该整数必须小于或等于表维数.
若要禁用子表选择,请输入
0
插值整个表。
控件时,子表选择行为针对行主布局进行了优化数学和数据类型>使用针对行主数组布局优化的算法配置参数。
有关更多信息,请参见块如何插值表数据的子集.
编程使用
块参数:NumSelectionDims |
类型:特征向量 |
价值观:'0' | '1' | '2' | '3' | '4' |…|表维度数 |
默认值:' 0 ' |
在生成的代码中删除对超出范围索引的保护
删除检查超出范围的索引输入的代码
从
(默认)|在
复选框 | 结果 | 何时使用 |
---|---|---|
|
生成的代码不包括检查超出范围的索引输入的条件语句。 当输入 |
为了提高代码效率 |
|
生成的代码包括条件语句,用于检查超出范围的索引输入。 |
安全关键应用 |
如果您的输入没有超出范围,您可以选择在生成的代码中删除对超出范围索引的保护复选框表示代码效率。默认情况下,该复选框被清除。对于安全性较高的应用,请不要选中此复选框。如果要选择在生成的代码中删除对超出范围索引的保护复选框,首先检查您的模型输入是否在范围内。例如:
清除在生成的代码中删除对超出范围索引的保护复选框。
设置诊断超出范围的输入参数
错误
.在正常模式下模拟模型。
如果有超出范围的错误,将它们修复到范围内并再次运行模拟。
当模拟不再产生超出范围的输入错误时,选择在生成的代码中删除对超出范围索引的保护复选框。
请注意
当你选择在生成的代码中删除对超出范围索引的保护复选框和输入
k
或f
超出范围,则生成的代码的行为未定义。
根据您的应用程序,您可以运行以下Model Advisor检查来验证此复选框的使用:
通过产品>嵌入式编码器>识别生成昂贵的范围外检查代码的查找表块
通过产品>金宝app仿真软件检查>建模标准>- 331 - 178 - c /做检查吗>检查查找表块的使用情况
有关Model Advisor的更多信息,请参见运行Model Advisor检查.
此外,要确定选择此复选框是否安全,如果您有金宝appSimulink设计验证器™许可证,考虑使用检测块输入范围违反(金宝appSimulink Design Verifier)检查。
当下列情况之一为真时,此复选框对生成的代码没有影响:
的Prelookup块将索引值提供给使用预查找的插值块。
因为索引值来自Prelookup块始终有效,不需要检查代码。
输入的数据类型
k
将数据限制为有效的索引值。例如,无符号整数数据类型保证索引值为非负。因此,的无符号输入值
k
不要求负数的检查代码。
编程使用
块参数:RemoveProtectionIndex |
类型:特征向量 |
价值观:'off' | 'on' |
默认值:“关闭” |
数据类型
表数据
—表值的数据类型
Inherit:与output相同
(默认)|继承:从“表数据”继承
|双
|单
|int8
|uint8
|int16
|uint16
|int32
|uint32
|int64
|uint64
|fixdt (16)
|fixdt (1 16 0)
|fixdt(1, 16日2 ^ 0,0)
|<数据类型表达式>
指定表数据类型。你可以设置为:
继承数据类型的规则,例如,
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相同
|双
|单
|int8
|uint8
|int16
|uint16
|int32
|uint32
|int64
|uint64
|fixdt (16)
|fixdt (1 16 0)
|fixdt(1, 16日2 ^ 0,0)
|<数据类型表达式>
指定中间结果数据类型。你可以设置为:
继承数据类型的规则,例如,
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)' | '<数据类型表达式>' |
默认值:“继承:与输入相同” |
输出
-输出数据类型
继承:从“表数据”继承
(默认)|继承:通过反向传播继承
|双
|单
|int8
|uint8
|int16
|uint16
|int32
|uint32
|int64
|uint64
|fixdt (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软件使用这个值执行:
参数范围检查(参见指定块参数的最小值和最大值).
模拟范围检查(见指定信号范围).
自动缩放定点数据类型。
优化从模型生成的代码。这种优化可以删除算法代码,并影响某些模拟模式(如SIL或外部模式)的结果。有关更多信息,请参见使用指定的最小值和最大值进行优化(嵌入式编码).
编程使用
块参数:OutMin |
类型:特征向量 |
价值观:标量 |
默认值:“[]” |
输出最大
—该块可输出的最大值
[]
(默认)|标量
指定块应输出为有限实值标量的最大值。默认值为[]
(不明)。金宝appSimulink软件使用这个值执行:
参数范围检查(参见指定块参数的最小值和最大值).
模拟范围检查(见指定信号范围).
自动缩放定点数据类型。
优化从模型生成的代码。这种优化可以删除算法代码,并影响某些模拟模式(如SIL或外部模式)的结果。有关更多信息,请参见使用指定的最小值和最大值进行优化(嵌入式编码).
编程使用
块参数:OutMax |
类型:特征向量 |
价值观:标量 |
默认值:“[]” |
内部规则优先级
-中间计算的内部规则
速度
(默认)|精度
指定用于中间计算的内部规则。选择速度
为了更快的计算。如果您这样做,可能会发生精度损失,通常高达2位。
编程使用
块参数:InternalRulePriority |
类型:特征向量 |
价值观:“速度”|“精度” |
默认值:“速度” |
锁定数据类型设置,防止由定点工具更改
—防止定点工具覆盖数据类型
从
(默认)|在
选择此参数可防止定点工具覆盖在此块上指定的数据类型。有关更多信息,请参见锁定输出数据类型设置(定点设计师).
编程使用
块参数:LockScale |
类型:特征向量 |
价值观:'off' | 'on' |
默认值:“关闭” |
整数舍入模式
-舍入模式的定点操作
地板上
(默认)|收敛
|天花板
|最近的
|轮
|简单的
|零
为定点操作指定舍入模式。有关更多信息,请参见舍入(定点设计师).
块参数总是舍入到最接近的可表示值。若要控制块参数的舍入,请在mask字段中使用MATLAB舍入函数输入表达式。
编程使用
块参数:RndMeth |
类型:特征向量 |
价值观:“天花板”|“收敛”|“地板”|“最近”|“圆”|“最简单”|“零” |
默认值:“地板” |
饱和整数溢出
-溢出动作方式
从
(默认)|在
指定溢出是饱和还是包裹。
行动 | 基本原理 | 对溢出的影响 | 例子 |
---|---|---|---|
选中此复选框( |
您的模型可能有溢出,并且您希望在生成的代码中显式地进行饱和保护。 |
溢出饱和到数据类型可以表示的最小值或最大值。 |
的最大值 |
不要选中此复选框( |
您希望优化生成代码的效率。 您希望避免过度指定块如何处理超出范围的信号。有关更多信息,请参见排除信号范围错误. |
溢出包装为由数据类型表示的适当值。 |
的最大值 |
选中此复选框后,饱和将应用于块上的每个内部操作,而不仅仅是输出或结果。通常,代码生成过程可以检测何时不可能出现溢出。在这种情况下,代码生成器不会产生饱和代码。
编程使用
块参数:SaturateOnIntegerOverflow |
类型:特征向量 |
价值观:'off' | 'on' |
默认值:“关闭” |
模型的例子
块特征
数据类型 |
|
直接引线 |
|
多维信号 |
|
适应信号 |
|
讨论二阶导数过零检测 |
|
扩展功能
C/ c++代码生成
使用Simulink®Coder™生成C和c++代码。金宝app
PLC代码生成
使用Simulink®PLC Coder™生成结构化文本代码。金宝app
金宝appSimulink PLC Coder™对查找表块的支持有限。金宝app编码器不支持:金宝app
大于2的维数
三次样条插值方法
使用以前的索引模式开始索引搜索
三次样条外推法
定点转换
使用定点设计器设计和模拟定点系统。
版本历史
另请参阅
主题
- 关于查找表块
- 解析查找表
- 输入断点和表数据
- 选择查找表的指导方针
- 使用查找表块的模型的列-主布局到行-主布局转换(金宝app仿真软件编码器)
- 行-主阵列布局的子表选择插值算法(金宝app仿真软件编码器)
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。