优化查找表以提高内存效率
的查找表优化器优化查找表数据的断点间距和数据类型,以减少查找表使用的内存。使用查找表优化器和它的命令行等价,你可以:
优化现有的查找表块。
从Simulink生成一个查找表金宝app®块,包括数学函数块或子系统。
从函数或函数句柄生成查找表。
使用查找表优化器优化现有查找表
控件的模型,以优化现有查找表查找表块。
openExample (“金宝appsimulink_automotive / ModelingAFaultTolerantFuelControlSystemExample”,“金宝appsupportingfile”,“sldemo_fuelsys”);open_system (“sldemo_fuelsys / fuel_rate_control / airflow_calc”);
泵恒
查找表块。
要打开查找表优化器,请选择
泵恒
查找表块。上下文敏感的查找表选项卡将出现在Simulink工具条中金宝app。在查找表选项卡上,选择查找表优化器.选择要优化的块类型。优化Simulink块或子系金宝app统,包括现有的查找表块或数学函数块,选择金宝appSimulink块或子系统.若要为函数句柄生成查找表近似,请选择MATLAB函数句柄.
在本例中,选择金宝appSimulink块或子系统优化
泵恒
查找表。点击下一个.下块的信息,输入路径
泵恒
查找表块。选择模型中的块,然后单击获取当前块在查找表优化器中自动填写块路径。点击从模型中收集当前值更新模型图,并允许查找表优化器自动收集优化过程所需的信息,包括当前输出数据类型、输入数字、数据类型和值范围。您可以手动编辑所有这些字段,以指定除当前在块上指定的字段之外的范围和数据类型。
指定期望输出数据类型生成的查找表的
numerictype
或金宝app仿真软件。NumericType
对象。将块的每个输入的数据类型指定为
numerictype
或金宝app仿真软件。NumericType
对象。将生成的查找表的每个输入的最小值和最大值指定为表中的标量。
对于本例,使用模型上指定的当前值。点击下一个.
指定要在优化中使用的约束。设置输出容错这对你们的设计是可以接受的。
绝对公差定义为原始输出值与优化查找表输出值之差的绝对值。
相对容差测量相对于该点的值的误差,指定为非负值。
根据对预期硬件目标有效的类型,将允许的字长指定为向量。例如,如果您希望允许优化器只考虑8-、16-和32-类型,请指定
[8 16 32]
在允许的字长(向量)字段。要为优化后的查找表指定其他属性,请单击附近地区规范.有关每个属性的详细信息,请参见
FunctionApproximation。选项
.在本例中,使用这些属性的默认值。属性指定优化选项,例如生成的查找表的最大时间或最大内存使用量按钮。
设置约束后,单击优化.
您还可以选择单击,在优化求解器完成之前停止优化求解器停止.优化器将选择当时找到的最佳解决方案停止按钮被选中并显示在应用程序中。
优化完成后,优化器报告优化后查找表的内存。您可以编辑约束并再次运行优化以进一步减少内存。
查找表优化器使用默认设置可减少
泵恒
查找表块从1516字节到505字节(66.69%)。点击下一个.
点击显示对比图查看原始块输出与新优化查找表输出的比较图。
点击替换原函数使用应用程序找到的优化设置生成一个新的查找表,并替换原来的块。
新的块是一个屏蔽变量子系统,其中的活动变量是优化的查找表块。非活动的变体是原始块。
编辑优化设置并生成一个新的近似
您可以通过编辑优化期间使用的设置来迭代更改近似块,以生成新的查找表。
双击泵送常数块。要编辑优化设置,请在“块参数”对话框中单击重新设计近似.
在“查找表优化器”中,单击下一个要进入创建在本例中,将绝对容差和相对容差编辑为稍大的值,以便进一步减小查找表的大小。
设置绝对耐
0.01
,或1%。设置相对耐
0.01
,或1%。
点击优化使用新选项优化查找表。
使用这些容差值,新的查找表仅使用304字节的内存。
点击下一个.在结果页,单击替换原函数按钮,将近似块的第一次迭代替换为此最新迭代。
在模型中,双击泵送常数块打开块参数。块参数显示用于近似的设置
使原来的块或子系统的活动变体,旁边选择所需的函数版本中,选择
原始
.若要从模型中删除查找表近似,请在块参数中单击恢复到原始.
另请参阅
应用程序
类
FunctionApproximation。问题
|FunctionApproximation。选项
|FunctionApproximation。LUTSolution
|FunctionApproximation。LUTMemoryUsageCalculator