主要内容

使用预查找和插值块

这个例子展示了如何使用预查找和插值使用预查找块。

简介

该模型使用预查找和使用预查找块的插值。Prelookup块最大限度地减少在一组查找表中执行的索引搜索的数量。它还在一个表计算中混合了裁剪、外推和索引搜索算法。注意Prelookup块如何执行索引搜索部分的计算,而使用Prelookup块执行插值的其余部分:

这些块位于查找表子库中的Simulink®块库中万博1manbetx:

优化:使用预查找块进行预查找和插值

考虑对断点集中有大量索引搜索的表使用PreLookup块。Prelookup块允许您执行一次索引搜索,并在多次表查找中重用结果。在这个模型中,三个索引搜索结果在五个块中使用,总共使用了10次。同等的常规查找表(如右边的示例)需要10次索引搜索,而不是3次。

优化:使用预查找块插值中的子表选择选项

这个模型中的一个插值块是使用一个功能配置的:一个n-D表的尾随维度可以标记为“选择维度”,这意味着该维度的输入是一个仅用于进行子表选择的整数,例如从一个3-D表中选择一个2-D平面。然后正常地插入子表。

子表的插值可以节省大量的计算量。插值每消除一个维度,计算量几乎减半。因为一个N维的插值需要(2^N)-1个单独的插值操作(y = yellow + f*(yhigh- yellow)),所以仅仅一个维度的选择几乎可以使插值的速度翻倍。极端的例子:一个5-D表,有三个维度的子表选择和2- d插补:5-D插补需要2^5-1 = 31次插补,但2- d插补只需要2^2 -1 = 3次。

选择端口支持向量化,允许在单个块中进行多万博1manbetx个子表选择/插补。

子表或多表操作模式是通过在块参数对话框中为“子表选择维度的数量”参数设置一个正整数来激活的。您设置的数字将被解释为要从最高维度中选择的维度数。例如,如果你有一个3- d表并选择2,这意味着第一个维度将被插值,并且维度2和3将被选择:

注意:你可以使用视图/删除高亮菜单项或以下命令从模型中删除高亮:

set_param (mdl“HiliteAncestors”“没有”

断点和表数据一致性检查

使用预查找块引入了确保预查找块中'Breakpoint data'参数的长度与使用预查找块连接的插值中'Table data'参数的对应维度相匹配的需求。万博1manbetx在更新框图时,Simulink®总是检查两个块之间的一致性。万博1manbetx如果遇到不一致的断点和表数据,Simulink将报告错误。例如:

试一试evalc ([“sim(”mdl,“)”]);E disp ([的错误:E.message]);结束
sldemo_bpcheck/在11x11表上的插值错误IN DIM 2 '不匹配对应的11维表的大小。为输入端口k2指定不同的表维度或修改值的范围。