主要内容

优化查找表以提高内存效率

这个查找表优化器优化断点的间距和查询表数据的数据类型,以减少查询表使用的内存。使用查找表优化器以及它的命令行等效项,您可以:

  • 优化现有的查找表

  • 从Simulink生成一个查找表金宝app®块,包括一个数学函数块或子系统。

  • 从函数或函数句柄生成查找表。

使用查询表优化器优化现有查询表

要优化现有查找表,请打开包含查找表

加载系统(“sldemo_fuelsys”); 开放式系统(“sldemo燃料系统/燃料率控制/气流计算”);
此示例显示了如何优化泵送常数 查找表

  1. 要打开查找表优化器,请选择泵送常数查找表块。上下文敏感查找表选项卡出现在Simulink工具条中。金宝app在查找表选项卡,选择查找表优化器

  2. 选择要优化的块类型。要优化Simulink块或子系统,包括现有的金宝app查找表块还是块数学函数块,选择金宝appSimulink块或子系统。若要为函数句柄生成查找表近似值,请选择MATLAB函数句柄

    在本例中,选择金宝appSimulink块或子系统优化泵送常数查找表。单击下一个

  3. 在下面块信息,输入到的路径泵送常数查找表块。选择模型中的块,然后单击获取当前块在查找表优化器中自动填充块路径。

  4. 点击从模型中收集当前值更新模型图,并允许查找表优化器自动收集优化过程所需的信息,包括当前输出数据类型、输入数字、数据类型和值范围。您可以手动编辑所有这些字段,以指定块上当前指定的范围和数据类型。

    • 指定所需的输出数据类型将生成的查找表的numerictype金宝appSimulink.NumericType对象。

    • 将块的每个输入的数据类型指定为numerictype金宝appSimulink.NumericType对象。

    • 将生成的查找表的每个输入的最小值和最大值指定为表中的标量。

    对于本例,使用模型中指定的当前值。点击下一个

  5. 指定要在优化中使用的约束。设置输出误差容限这对你的设计来说是可以接受的。

    • 绝对容差定义为原始输出值与优化后查找表输出值差的绝对值。

    • 相对公差测量相对于该点的值的误差,指定为非负。

  6. 根据对预期硬件目标有效的类型,将允许的字长指定为向量。例如,如果您希望允许优化器只考虑8-、16-和32位类型,请指定[8 16 32]允许的字长(矢量)领域

  7. 要为优化的查找表指定其他属性,请单击LUT规范。有关每个属性的详细信息,请参阅FunctionApproximation。选项.在本例中,这些属性使用默认值。

  8. 指定优化选项,例如,通过单击按钮

  9. 设置约束后,单击优化

    (可选)您可以通过单击来选择在优化解算器完成之前停止优化解算器停止. 优化器将选择在优化时找到的最佳解决方案停止按钮被选中并显示在应用程序中。

    当优化完成时,优化器报告优化后的查找表的内存。您可以编辑约束并再次运行优化以进一步减少内存。

    使用默认设置,查找表优化器会减少泵送常数查找表块从1516字节到505字节(66.69%)。

    点击下一个

  10. 点击显示比较图查看原始块输出与新优化查找表的输出进行比较的绘图。

    点击取代原始的函数使用应用程序找到的优化设置生成一个新的查找表,并替换原来的块。

    新块是一个掩码变体子系统,其中活动变体是优化的查询表块。非活动变量是原始块。

编辑优化设置并生成新的近似值

通过编辑优化过程中使用的设置以生成新的查找表,可以迭代更改近似块。

  1. 双击泵送常数块。要编辑优化设置,请在块参数对话框中单击重新设计近似值

  2. 在“查找表优化器”中,单击下一个前往创建应用程序的第页。在本例中,将绝对和相对公差编辑为稍大的值,以便进一步减小查找表的大小。

    • 设定完全的容忍0.01,或1%。

    • 设定相对的容忍0.01,或1%。

  3. 点击优化使用新选项优化查找表。

    使用这些公差值,新的查找表仅使用304字节的内存。

  4. 点击下一个.在结果页面中,单击取代原始的函数按钮以将近似值块的第一次迭代替换为最新的迭代。

  5. 在模型中,双击泵送常数块以打开块参数。块参数显示用于近似的设置

    使原始的块或子系统成为主动的变体,紧挨着选择所需的功能版本选择原始

    要从模型中删除查找表近似值,请在“块参数”中单击恢复原状

另见

应用程序

班级

相关的话题