默认情况下,以下查找表块的生成代码包括检查超出范围的断点或索引输入的条件语句:
要生成更高效的代码,可以删除保护免受范围超出输入值的条件语句。
块 | 复选框以选择 |
---|---|
1-D查找表 | 在生成的代码中删除对超出范围输入的保护 |
2-D查找表 | |
n-d查找表 | |
prelookup. | |
使用prelookup插值 | 删除生成代码中的无法超出索引的保护 |
选择块对话框上的复选框可以提高代码效率,因为要执行的语句更少。但是,如果您正在为安全关键型应用程序生成代码,则不应该删除范围检查代码。
要验证复选框的使用,请运行以下模型顾问检查并执行建议的操作。
模型顾问检查 | 何时运行检查 |
---|---|
由产品>嵌入式编码器>标识生成昂贵的超出范围检查代码的查找表块 |
代码效率 |
由产品>金宝appSimulink检查>建模标准>- 331 - 178 - c /做检查吗>检查查找表块的使用情况 |
用于安全关键型应用 |
有关模型顾问的更多信息,请参阅使用模型顾问检查您的模型在Simuli金宝appnk.®文档。
当可调调谐表中的断点时,间距不会影响生成的代码的效率或内存使用情况。什么时候断点不是可调,间距的类型会影响以下因素。
因素 |
即使是2个间隔数据的功率也是如此 |
均匀间隔的数据 |
不均匀间隔的数据 |
---|---|---|---|
执行速度 |
执行速度是最快的。位置搜索和插值与均匀间隔数据相同。然而,为了增加速度,对于定点类型,比特换档替换位置搜索,并且位掩码替换插值。 |
执行速度比不均匀间隔数据更快,因为位置搜索更快,插值使用简单的划分。 |
由于位置搜索速度较慢,而且插值需要更多的运算,所以执行速度是不同空间中最慢的。 |
错误 |
错误可以大于不均匀间隔数据的误差,因为近似与非均匀曲率的函数需要更多的点来达到相同的精度。 |
错误可以大于不均匀间隔数据的误差,因为近似与非均匀曲率的函数需要更多的点来达到相同的精度。 |
错误可能较小,因为近似具有非均匀曲率的函数需要较少的点来实现相同的精度。 |
罗的使用 |
使用较少的命令ROM,但更多的数据ROM。 |
使用较少的命令ROM,但更多的数据ROM。 |
使用更多命令ROM,但更少的数据ROM。 |
RAM使用率 |
不重要。 |
不重要。 |
不重要。 |
遵循这些指导方针:
对于定点数据类型,使用均匀的断点,即均匀的2个间距。
对于非定点数据类型,使用间隔均匀的断点。
要确定在查找表块中提高代码效率的机会,请运行以下模型顾问检查并执行建议的操作:
由产品>嵌入式编码器>识别可疑的定点操作
由产品>嵌入式编码器>识别生成昂贵饱和度和舍入代码的块
有关模型顾问的更多信息,请参阅使用模型顾问检查您的模型在Simuli金宝appnk文档中。
当您使用工作空间变量来存储Lookup table块的表和断点数据,然后为可调性配置这些变量时,您可以通过为块参数和变量使用相同的数据类型来避免数据复制。工作空间变量包括数值MATLAB®变量和金宝appSimulink.Parameter.
存储在工作区(例如基本工作区)或数据字典中的对象。如果变量的数据类型小于块参数的数据类型,则生成的代码会隐式地将变量的数据类型转换为块参数的数据类型。这种隐式强制转换需要一个数据副本,对于大型向量或矩阵,可能会显著增加RAM消耗并降低代码执行速度。
有关更多信息,请参阅生成的代码中的参数数据类型(嵌入式编码器)和在生成的代码中创建可调调校验参数(金宝appSimulink编码器).
要为行主要数组布局生成有效代码,请选择“模型配置”参数数学和数据类型>使用针对行主要数组布局优化的算法.当使用行主数组布局操作表数据时,行主算法以最佳的速度和内存使用情况执行。类似地,默认的列主算法在列主数组布局中表现最好。考虑使用针对指定数组布局进行优化的算法,以获得最佳性能。例如,当在代码生成期间将数组布局设置为行主时,可以使用行主算法。
数组布局 | 算法 | 缓存友好算法 |
---|---|---|
专栏专业 | 专栏专业 | 受到推崇的 |
划艇 | 划艇 | 受到推崇的 |
划艇 | 专栏专业 | 不建议 |
专栏专业 | 划艇 | 不建议 |
有关更多信息,请参阅列主要布局与带查找表块的模型的划分型布局转换(金宝appSimulink编码器).
使用prelookup插值|n-d查找表|prelookup.