使用预查找块计算插值的索引和分数
万博1manbetxSimulink /查找表
HDL编码器/查找表
Prelookup块计算指定其输入值的索引和间隔分数u
与断点数据集相关。Prelookup块与使用预查找的插值块。输入结果索引和分数值到插值使用预查找块插值n维表。这两个块有分布式算法。组合在一起时,它们执行与集成算法中相同的操作n-D查找表块。然而,Prelookup和使用预查找的插值块提供了更大的灵活性和更有效的模拟和代码生成n-D查找表块。有关更多信息,请参见绩效效率.
若要使用预查找块,必须指定一组断点值。您可以选择是直接在对话框上指定断点值,还是将这些值提供给英国石油公司
的输入端口源参数对话框
或输入端口
.通常,此断点数据集对应于“使用预查找插值”块中的表数据的一维。Prelookup块为每个输入值生成一对输出u
通过计算:
小于或等于的断点集元素的索引u
并形成一个区间包含u
在0≤f < 1范围内的区间分数,表示归一化的位置u
在范围内输入的索引值和下一个索引值之间的断点间隔上
例如,如果断点数据集为[0 5 10 20 50 100]
和输入值u
为55,指数为4,分数值为0.1。索引和区间分数的标签显示为k而且f在预查找块图标上。索引值从零开始。
区间分数可以为负或大于1
对于超出范围的输入。看到外推法块参数获取更多信息。
Port_1
-输入信号,u
Prelookup块接受Simulink中任何数值数据类型的实值信号万博1manbetx®万博1manbetx支持,布尔值除外。Prelookup块支持信号和断点数据的万博1manbetx定点数据类型。
数据类型:一半
|单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|不动点
|枚举
|公共汽车
英国石油公司
-断点数据Prelookup块接受实值信号作为Simulink支持的任何数值数据类型(布尔型除外)的断点数据。万博1manbetx万博1manbetx
数据类型:一半
|单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|不动点
|枚举
k
-包含输入的区间的索引,u
从零开始的索引,k,是一个实值整数,指定包含输入的间隔,u
.
若要启用此端口,请设置输出选择来指数和分数
或指数只
.
数据类型:int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|不动点
f
-表示输入归一化位置的分数,u
,在此期间,k分数,f,表示输入的归一化位置,u
,在区间内k.
若要启用此端口,请设置输出选择来指数和分数
.
数据类型:单
|双
|不动点
Port_2
-总线包含索引,k,和分数,f输出索引,k,和分数f,作为总线对象可以帮助简化模型。
若要启用此端口,请设置输出选择来指数和分数作为总线
.
数据类型:公共汽车
规范
—选择输入断点数据的方式明确的价值观
(默认)|甚至间距
|断点对象
如果将此参数设置为:
明确的价值观
,源而且价值参数在对话框中可见。
甚至间距
,第一点,间距,点数参数在对话框中可见。
断点对象
,的名字参数在对话框中可见。
块参数:BreakpointsSpecification |
类型:特征向量 |
价值观:'显式值' | '甚至空格' | '断点对象 |
默认值:“显式值” |
源
—指定断点数据的来源对话框
(默认)|输入端口
如果你设置源:
对话框
下指定断点数据价值.
输入端口
,验证上游信号是否向英国石油公司
输入端口。每个断点数据集必须是一个严格单调递增的向量,其中包含两个或多个元素。属性的断点属性英国石油公司
输入端口。
若要启用该参数,请设置规范来明确的价值观
.
块参数:BreakpointsDataSource |
类型:特征向量 |
价值观:对话框|输入端口 |
默认值:“对话框” |
价值
—断点数据值(10:10:110)
(默认值)|包含两个或多个元素的严格单调递增值的向量显式地指定断点数据。每个断点数据集必须是一个严格单调递增的向量,其中包含两个或多个元素。属性上的其他断点属性数据类型窗格。
要打开“查找表编辑器”,单击编辑(见编辑查找表).
请注意
当你设置规范来明确的价值观
而且源来输入端口
,验证上游信号是否向英国石油公司
输入端口。每个断点数据集必须是一个严格单调递增的向量,其中包含两个或多个元素。属性的断点属性(包括数据类型)英国石油公司
输入端口。
若要启用该参数,请设置规范来明确的价值观
而且源来对话框
.
块参数:BreakpointsData |
类型:特征向量 |
价值观:包含两个或多个元素的严格单调递增值的向量 |
默认值:“[10:10:110]” |
第一点
-间隔均匀的断点数据中的第一个点10
(默认)|实值标量
若要启用该参数,请设置规范来甚至间距
.
块参数:BreakpointsFirstPoint |
类型:特征向量 |
价值观:实值标量 |
默认值:“十” |
间距
-间隔均匀的断点10
(默认)|实数,正标量
若要启用该参数,请设置规范来甚至间距
.
块参数:BreakpointsSpacing |
类型:特征向量 |
价值观:实数,正标量 |
默认值:“十” |
点数
-等距点的数目11
(默认)|实数,正标量
若要启用该参数,请设置规范来甚至间距
.
块参数:BreakpointsNumPoints |
类型:特征向量 |
价值观:实数,正标量 |
默认值:“11” |
的名字
-用户名万博1manbetx仿真软件。断点
对象没有默认的
|万博1manbetx仿真软件。断点
的名称万博1manbetx仿真软件。断点
对象。断点对象引用Simulink断点对象。万博1manbetx如果一个万博1manbetx仿真软件。断点
对象不存在,请单击操作按钮并选择创建.新断点对象的相应参数将自动填充块信息。
若要启用该参数,请设置规范来断点对象
.
块参数:BreakpointObject |
类型:特征向量 |
价值观:万博1manbetx仿真软件。断点 对象 |
默认值:” |
输出选择
—指定块输出的信号指数和分数
(默认)|指数和分数作为总线
|指数只
如果您希望该块输出索引和间隔分数,您可以指定该块输出单个信号还是同时包含索引和分数信号的总线信号。
指数只
只输出索引,不输出分数。此选项的典型应用包括:
喂一个直接查表(n-D)块,在间隔上没有插值
的子表选择的输入选择端口使用预查找的插值块
执行非线性量化
指数和分数
将指数和分数作为单独的信号输出。
指数和分数作为总线
输出包含索引和分数信号的总线信号。为这些信号使用总线:
通过将这两个相关信号联系在一起来简化模型
创建一个测试点DpResult
结构的AUTOSAR 4.0库
对于AUTOSAR 4.0库,避免在代码生成过程中创建额外的副本Prelookup而且使用预查找的插值块在单独的模型中
请注意
选择指数和分数作为总线
显示了输出参数中的数据类型窗格,并设置输出参数继承:汽车
.更改此默认值以指定用户定义的总线对象。有关定义总线对象的详细信息,请参见输出参数描述。
块参数:OutputSelection |
类型:特征向量 |
价值观:索引和分数“|”作为总线的索引和分数“|”仅用于索引 |
默认值:“指数与分数” |
索引检索法
—查找断点数据的方法二分查找
(默认)|线性搜索
|等距点
每种搜索方法在不同情况下都有速度优势:
对于间隔均匀的断点集(例如,10、20、30等等),可以通过选择来获得最佳速度等距点
计算表索引。该算法仅使用集合的前两个中断点来确定其余点的偏移和间距。
对于间隔不均匀的断点集,请遵循以下准则:
如果输入值为u
时间步长之间变化不明显,选择线性搜索
与开始索引搜索使用以前的索引结果产生最好的性能。
如果输入值为u
选择时,每个时间步跃超过一个或两个表间隔二分查找
产生最好的性能。
索引搜索方法的次优选择可能导致严重依赖查找表的模型性能变慢。
请注意
生成的代码只存储第一个断点、间隔和断点的数量:
断点数据不可调。
索引搜索方法为等距点
.
块参数:IndexSearchMethod |
类型:特征向量 |
价值观:“等距点” |“线性搜索” |“二分法” |
默认值:“二分法” |
开始索引搜索使用以前的索引结果
-使用在前一个时间步骤中找到的索引开始搜索从
(默认)|在
对于输入值u
随着间隔大小的变化缓慢,启用这个选项可以提高性能。否则,线性搜索和二分搜索方法会花费更长的时间,特别是对于大型断点集。
块参数:BeginIndexSearchUsingPreviousIndexResult |
类型:特征向量 |
价值观:“关闭” |“上” |
默认值:“关闭” |
外推法
-处理超出范围输入值的方法剪辑
(默认)|线性
选项包括:
剪辑
块的输入 | 块输出 |
---|---|
小于第一个断点 |
|
大于上一个断点 |
|
假设值域为[1 2 3]
你选择了这个选项。如果u
是0.5
,索引为0
区间分数是0
.如果u
是3.5
,索引为1
区间分数是1
.
线性
块的输入 | 块输出 |
---|---|
小于第一个断点 |
|
大于上一个断点 |
|
假设值域为[1 2 3]
你选择了这个选项。如果u
是0.5
,索引为0
区间分数是-0.5
.如果u
是3.5
,索引为1
区间分数是1.5
.
请注意
Prelookup块仅在满足以下所有条件万博1manbetx时支持线性外推:
输入u
、断点数据和分数输出使用浮点数据类型。
索引使用内置整数数据类型。
块参数:ExtrapMethod |
类型:特征向量 |
价值观:“剪辑”|“线性” |
默认值:“剪辑” |
对于大于或等于上限的输入,使用最后一个断点
-处理输入大于或等于上限的方法从
(默认)|在
指定如何索引的输入值u
大于或等于最后一个断点的。索引值从零开始。当输入等于最后一个断点时,块输出如下所示。
复选框 | 块输出 |
---|---|
选择( |
|
清除( |
|
提示
当你选择对于大于或等于上限的输入,使用最后一个断点对于预查找块,也必须选择有效的索引输入可能到达最后一个索引为使用预查找的插值它所连接到的块。此操作允许块在访问断点和表数据集的最后一个元素时使用相同的索引约定。
此复选框仅在以下情况下可见:
只输出索引清除
外推法是剪辑
然而,当只输出索引被选中,并且外推法是剪辑
时,该块的行为就像选中了该复选框一样,即使它是不可见的。
块参数:UseLastBreakpoint |
类型:特征向量 |
价值观:'off' | 'on' |
默认值:“关闭” |
诊断超出范围的输入
-当输入超出范围时阻止动作没有一个
(默认)|警告
|错误
选项包括:
没有一个
-没有回应。
警告
-显示警告并继续模拟。
错误
-终止模拟并显示错误。
块参数:DiagnosticForOutOfRangeInput |
类型:特征向量 |
价值观:' | '警告' | '错误' |
默认值:“没有” |
在生成的代码中删除对超出范围输入的保护
删除检查超出范围的断点输入的代码从
(默认)|在
复选框 | 结果 | 何时使用 |
---|---|---|
|
生成的代码不包括检查超出范围的断点输入的条件语句。 当输入超出范围时,可能会导致生成的代码出现未定义的行为。 |
为了提高代码效率 |
|
生成的代码包括条件语句,用于检查超出范围的断点输入。 |
安全关键应用 |
如果您的输入没有超出范围,您可以选择在生成的代码中删除对超出范围索引的保护复选框表示代码效率。默认情况下,该复选框被清除。对于安全性较高的应用,请不要选中此复选框。如果要选择在生成的代码中删除对超出范围索引的保护复选框,首先检查您的模型输入是否在范围内。例如:
清除在生成的代码中删除对超出范围索引的保护复选框。
设置诊断超出范围的输入参数错误
.
在正常模式下模拟模型。
如果有超出范围的错误,将它们修复到范围内并再次运行模拟。
当模拟不再产生超出范围的输入错误时,选择在生成的代码中删除对超出范围索引的保护复选框。
请注意
当你选择在生成的代码中删除对超出范围索引的保护复选框,且输入超出范围,则生成的代码的行为未定义
根据您的应用程序,您可以运行以下Model Advisor检查来验证此复选框的使用:
此外,要确定选择此复选框是否安全,如果您有万博1manbetxSimulink设计验证器™许可证,考虑使用检测块输入范围违反(万博1manbetxSimulink Design Verifier)检查。
通过产品>嵌入式编码器>识别生成昂贵的范围外检查代码的查找表块
通过产品>万博1manbetx仿真软件检查>建模标准>- 331 - 178 - c /做检查吗>检查查找表块的使用情况
有关Model Advisor的更多信息,请参见运行Model Advisor检查.
块参数:RemoveProtectionInput |
类型:特征向量 |
价值观:'off' | 'on' |
默认值:“关闭” |
断点
—断点数据类型Inherit:与input相同
(默认)|继承:从“断点数据”继承
|双
|单
|int8
|uint8
|int16
|uint16
|int32
|uint32
|int64
|uint64
|fixdt (16)
|fixdt (1 16 0)
|fixdt(1, 16日2 ^ 0,0)
|Enum: <类名>
|<数据类型表达式>
指定断点数据类型。你可以设置为:
继承数据类型的规则,例如,Inherit:与input相同
内置数据类型的名称,例如,单
数据类型类的名称,例如,枚举数据类型类
求值为数据类型的表达式,例如,fixdt (1 16 0)
单击显示数据类型助手按钮显示数据类型助手,它可以帮助您设置数据类型属性。有关更多信息,请参见使用数据类型助手指定数据类型.
提示
指定与输入数据类型不同的断点数据类型u
对于这些情况:
用于存储使用比输入信号更小类型的断点数据的较低内存需求u
在两个之间共享预先缩放的断点数据Prelookup块,用于输入不同的数据类型u
为输入的数据类型不同的块在生成的代码中共享自定义存储断点数据u
为断点数据类型及其对应的输入数据类型指定相同的斜率和偏置(如果其中任何一个具有定点数据类型)。
枚举数据:
断点支持无序枚举数据。万博1manbetx因此,线性搜索也是无序的,这提供了灵活性,但会影响性能。搜索从断点中的第一个元素开始。
如果开始索引搜索使用以前的索引结果复选框,则必须使用有序单调递增的数据。这种排序可以提高性能。
对于枚举数据,外推法必须剪辑
.
因为分数是1
或0
中,选择输出选择>指数只.
方法使用仅索引输出选择设置使用预查找的插值块,考虑使用子表选择维数参数。
以下是在此块中使用枚举数据的限制:
该块不支持超出范围的枚举数据输入。万博1manbetx指定枚举数据时,将整个枚举集包含在断点数据集中。例如,使用枚举
函数。
当断点数据源设置为时替代进口港口
,枚举数据类型必须具有0
为默认值。例如,对于此枚举类,的默认值为GEAR1
必须0
.
classdef(枚举)齿轮< Simulink。万博1manbetxIntEnumType枚举GEAR1(1), GEAR2(2), GEAR3(4), GEAR4(8),运动(16),反向(32),中性(0)结束结束
若要启用此参数,请设置断点数据源来对话框
.
请注意
当你设置源来输入端口
的所有断点属性(数据类型、最小值和最大值)英国石油公司
输入端口。
块参数:BreakpointDataTypeStr |
类型:特征向量 |
价值观:继承:继承自“断点数据”|' double' |' single' |' int8' |' uint8' |' int16' |' uint16' |' int32' |' uint32' |' int64'| 'uint64'| 'fixdt(1,16)' |' fixdt(1,16,0)' |' fixdt(1,16,2^0,0)'|'<数据类型表达式>' |
默认值:“继承:与输入相同” |
指数
-索引数据类型uint32
(默认)|int8
|uint8
|int16
|uint16
|int32
|uint32
|int64
|uint64
|fixdt (16)
|<数据类型表达式>
指定可以索引断点数据集中所有元素的数据类型。您可以:
从列表中选择内置整数数据类型。
使用定点表示形式指定整数数据类型。
单击显示数据类型助手按钮显示数据类型助手,它可以帮助您设置数据类型属性。有关更多信息,请参见使用数据类型助手指定数据类型.
块参数:IndexDataTypeStr |
类型:特征向量 |
价值观: |
'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | '<数据类型表达式>' |
默认值:“uint32” |
分数
-分数数据类型继承:通过内部规则继承
(默认)|双
|单
|fixdt (1 16 0)
|<数据类型表达式>
指定间隔分数的数据类型。您可以:
从列表中选择内置数据类型。
通过内部规则指定数据类型继承。
使用[Slope Bias]或仅限二进制点的缩放表示法指定定点数据类型。
如果您使用[斜率偏差]表示,缩放必须是平凡的-也就是说,斜率是1
偏差是0
.
如果使用仅为二进制点的表示,则固定的2次幂指数必须小于或等于零。
单击显示数据类型助手按钮显示数据类型助手,它可以帮助您设置数据类型属性。有关更多信息,请参见使用数据类型助手指定数据类型.
此参数仅在设置时显示输出选择在主要选项卡,指数和分数
.
块参数:FractionDataTypeStr |
类型:特征向量 |
价值观:fixdt(1,16,0)' | '<数据类型表达式>' |
默认值:“继承:通过内部规则继承” |
输出
-输出数据类型继承:汽车
(默认)|总线:<对象名称>
要输出虚拟总线,请使用继承:汽车
设置。生成的虚拟总线包含两个元素,索引信号和分数信号。
要输出和指定非虚拟总线,请使用总线:<对象名称>
模板。取代<对象名称>
使用包含索引和分数信号的总线对象的名称。
总线对象必须包含两个元素。第一个元素对应于指标信号,第二个元素对应于分数信号。
索引和分数总线元素信号不能是总线信号。
总线元素的数据类型和复杂性必须满足适用于索引和分数信号的相同约束输出选择来指数和分数
.
要使用索引和分数总线元素创建总线对象,请使用MATLAB®与此类似的代码,自定义总线对象名称以及总线元素的名称和数据类型。
总线对象:kfBuselems(1) = 万博1manbetxSimulink.BusElement;elem(1)。Name =“指数”;elem(1)。数据类型=“int8”;elems(2) = 万博1manbetxSimulink.BusElement;elem(2)。Name =“分数”;elem(2)。数据类型=“双”;kfBus = 万博1manbetxSimulink.Bus;kfBus。元素= elems;清晰的初步的;
方法使用的总线编辑器也可以创建或修改总线对象Prelookup块。
如果您将总线输出信号从此块馈送到使用预查找的插值块,选择要求指数和分数作为总线复选框。
请注意
使用定点工具数据类型覆盖选项可以使用新的总线对象覆盖总线对象,这些总线对象将定点数据类型替换为浮点数据类型。
类使用的覆盖总线对象Prelookup块可能会导致错误,因为块不接受总线上第一个元素的浮点数据类型。
如果遇到此问题,请使用修复按钮重新定义原始总线对象并保护其不被覆盖。例如,假设您将总线对象的第一个元素定义为int32
.
myBus.Elements (1) .DataType
int32
单击修复按钮重新定义了第一个总线元素:
myBus.Elements (1) .DataType=“fixdt(“int32”、“DataTypeOverride”,“关闭”)”
单击显示数据类型助手按钮显示数据类型助手,它可以帮助您设置数据类型属性。有关更多信息,请参见使用数据类型助手指定数据类型.
此参数仅在设置时显示输出选择在主要选项卡,指数和分数作为总线
.
块参数:OutputBusDataTypeStr |
类型:特征向量 |
价值观:继承:auto' | '总线:<对象名称>' | '<数据类型表达式>' |
默认值:“继承:汽车” |
断点最小
—断点数据可以具有的最小值[]
(默认)|标量指定断点数据可以具有的最小值。默认值为[]
(不明)。
若要启用此参数,请设置断点数据源来对话框
在主要选项卡。
块参数:BreakpointMin |
类型:特征向量 |
值:标量 |
默认值:“[]” |
断点最大
—断点数据的最大值[]
(默认)|标量指定断点数据可以具有的最大值。默认值为[]
(不明)。
若要启用此参数,请设置断点数据源来对话框
在主要选项卡。
块参数:BreakpointMax |
类型:特征向量 |
值:标量 |
默认值:“[]” |
锁定输出数据类型设置,防止由定点工具更改
-防止定点工具覆盖输出数据类型从
(默认)|在
选择此参数可防止定点工具覆盖输出您在块上指定的数据类型。有关更多信息,请参见使用锁输出数据类型设置(定点设计师).
块参数:LockScale |
类型:特征向量 |
价值观:'off' | 'on' |
默认值:“关闭” |
整数舍入模式
-舍入模式的定点操作地板上
(默认)|天花板
|收敛
|最近的
|轮
|简单的
|零
为定点操作指定舍入模式。有关更多信息,请参见舍入(定点设计师).
块参数总是舍入到最接近的可表示值。要控制块参数的舍入,请使用MATLAB舍入函数在mask字段中输入表达式。
块参数:RndMeth |
类型:特征向量 |
价值观:“天花板”|“收敛”|“地板”|“最近”|“圆”|“最简单”|“零” |
默认值:“地板” |
数据类型 |
|
直接引线 |
|
多维信号 |
|
适应信号 |
|
讨论二阶导数过零检测 |
|
用枚举值模拟预查找块。
假设你有一个Prelookup块,其中定义了一个这样的枚举类:
classdef(枚举)齿轮< Simulink。万博1manbetxIntEnumType枚举GEAR1(1), GEAR2(2), GEAR3(4), GEAR4(8),运动(16),反向(-1),中性(0)结束结束
预查找块有以下设置:
断点数据值是枚举(齿轮)
.
输出选择是指数只
.
对于无序搜索,设置索引检索法来线性搜索
清除开始索引搜索使用以前的索引结果复选框。
外推法是剪辑
.
使用Prelookup块进行插值有以下设置:
维数来1
.
表数据值是[5 10 20 40 80 -5 0]
.
插值法是平
.
子表选择维数是1
.
模拟生成一个矢量[10 -5 80]
,对应于GEAR2
,反向
,体育
.
HDL Coder™提供了影响HDL实现和合成逻辑的额外配置选项。
这个块有一个单一的、默认的HDL体系结构。
ConstrainedOutputPipeline | 通过在设计中移动现有延迟来放置在输出端的寄存器数量。分布式管道不会重新分发这些寄存器。默认为 |
InputPipeline | 要在生成的代码中插入的输入管道阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认为 |
OutputPipeline | 要在生成的代码中插入的输出管道阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认为 |
所需的块设置
断点数据:对于源中,选择对话框
.
规范:任选其一明确的价值观
或甚至间距
.
索引检索法:选择等距点
.
外推法:选择剪辑
.
诊断超出范围的输入:选择错误
.
对于大于或等于上限的输入,使用最后一个断点:选中复选框。
断点:对于数据类型中,选择Inherit:与input相同
.
整数舍入模式:选择零
,地板上
,或简单的
.
表数据类型和大小
将断点之间的间距设置为2的幂,这是一个很好的实践。如果断点间距不满足此条件,HDL Coder将发出警告。当断点间距为2的幂时,可以将预查找步骤中的除法操作替换为右移操作。
块上的所有端口都需要标量值。
编码器允许使用浮点数据作为断点。
万博1manbetxSimulink PLC Coder对查找表块的支持有限。万博1manbetx编码器不支持:万博1manbetx
大于2的维数
三次样条插值方法
使用以前的索引模式开始索引搜索
三次样条外推法
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。