主要内容

使用n-D自适应查找表的模型引擎

目标

在本例中,您将学习如何使用n-D自适应查找表捕获引擎的时变行为。您可以使用Simulink完成以下任务万博1manbetx®软件:

  • 配置一个自适应查找表块来模拟您的系统。

  • 模拟模型以动态更新查找表值。

  • 将调整后的查找表值导出到MATLAB®工作区。

  • 在适应过程中锁定表中的特定单元格。

  • 禁用自适应进程,并使用自适应查找表作为静态查找表。

关于数据

在本例中,使用中的数据vedata.mat其中包含从发动机测量的以下变量:

  • X-进气歧管压力范围[10,100]的10个输入断点

  • Y在[0,7000]范围内,引擎转速有36个输入断点

  • Z-发动机容积效率表数据的10x36矩阵

    有关断点和表数据的详细信息,请参见解析查找表

发动机的输出容积效率随时间变化,是两个输入-进气歧管压力和发动机转速的函数。mat文件中的数据用于为引擎生成时变输入和输出(I/O)数据。

使用自适应查找表块构建模型

在本部分教程中,您将学习如何使用Adaptive Lookup Table块构建引擎模型。

  1. 打开一个预先配置的Simulink模型,在万博1manbetxMATLAB提示符中输入模型名称:

    enginetable1_data

    Simulink模型中的实验数据子系统在仿真过程中生成随时间变化的I/O数据。万博1manbetx

    该命令还加载变量XY而且Z进入MATLAB工作区。要详细了解此数据,请参见关于数据

  2. 向Simulink模型添加一个自适应查找表块。万博1manbetx

    1. 打开Simulin万博1manbetxk库浏览器。

      在MATLAB提示符下,输入slLibraryBrowser

    2. 打开万博1manbetxSimulink设计优化™图书馆。

      窗格中,展开万博1manbetxSimulink设计优化节点。

    3. 万博1manbetxSimulink设计优化库树,单击自适应查找表

    4. 将“自适应查找表”(nD Stair-Fit)块从“自适应查找表”库拖放到Simulink模型窗口。万博1manbetx

  3. 双击“自适应查找表(nD stairs - fit)”块,打开“功能块参数:自适应查找表(nD stairs - fit)”对话框。

  4. 在“功能块参数”对话框中:

    1. 指定以下块参数:

      • 表断点(单元格数组)——输入{[X;110年],[Y;7200]}指定输入断点的范围。

      • 表数据(初始)——输入兰特(36)将随机数指定为容量效率的初始表值。

      • 表编号数据——输入重塑(1:360 10 36)为表单元格指定编号方案。

    2. 验证样本均值(含遗忘)适应方法下拉列表。

    3. 输入0.98自适应增益(0到1)字段指定遗忘因子样本均值(含遗忘)适应算法。

      接近1的自适应增益表明查找表值对输入噪声具有较高的鲁棒性。要了解更多关于适应增益的信息,请参见带遗忘的样本均值选择适配方式

    4. 选择使适应的表成为输出复选框。

      此操作添加一个名为吹捧到自适应查找表块。您可以使用此端口在表值被改编时绘制它们。

    5. 选择添加自适应启用/禁用/复位端口复选框。

      此操作添加一个名为启用到自适应查找表块。该端口用于开启或关闭适配进程。

    6. 选择添加单元格锁定启用/禁用端口复选框。

      此操作添加一个名为到自适应查找表块。您可以使用此端口在适应过程中锁定单元格。

    7. 验证忽略越界动作下拉列表。

      此选择指定软件在适应过程中忽略输入断点范围之外的任何时变输入。

      提示

      要了解更多信息,请参见自适应查找表(nD stairs - fit)块引用页。

      配置完参数后,块参数对话框如下图所示。

    8. 点击好吧关闭“功能块参数”对话框。

      Simu万博1manbetxlink模型现在看起来类似于下图。

  5. 类型将输入和输出数据分配给引擎模型U而且Y端口的实验数据块u而且y自适应查找表块的端口。

  6. 使用Simulink块设计一个逻辑来启用或万博1manbetx禁用适应过程。将逻辑连接到Adaptive Lookup Table块,如下图所示。

    该逻辑输出一个初始值1,该值支持适应过程。

  7. 设计一个逻辑以在适应期间锁定单元格。将逻辑连接到Adaptive Lookup Table块,如下图所示。

  8. 在“Simul万博1manbetxink库浏览器”中,选择万博1manbetx>库,并拖动显示块到模型窗口。连接块,如下图所示。

    在模拟过程中,显示块显示如下:

    • 显示block -显示当前单元格的值。

    • Display1block -显示当前正在改编的单元格的数目。

  9. 编写一个MATLAB函数来绘制查找表值,因为它们在模拟过程中适应。

    另外,类型enginetable在MATLAB提示符下打开预配置的Simulink模型。万博1manbetx的效率表面子系统包含一个函数,用于绘制查找表值,如下图所示。

  10. 连接一个To Workspace块来导出经过调整的表值:

    1. 在“Simul万博1manbetxink库浏览器”中,选择万博1manbetx>库,并将To Workspace块拖动到模型窗口。

      要了解有关此块的更多信息,请参见到工作空间块引用页在Simulink文档中。万博1manbetx

    2. 双击To Workspace块以打开Sink block Parameters对话框,并键入吹捧变量名字段。

    3. 点击好吧

    4. 将To Workspace块连接到自适应查找表输出信号吹捧,如下图所示。

现在,您已经构建了用于更新和查看自适应查找表值的模型。您现在必须模拟模型以启动适配,如中所述使用时变I/O数据调整查找表值

使用时变I/O数据调整查找表值

在本教程的这一部分中,您将了解如何更新查找表值以适应时变的输入和输出值。

您必须已经构建了所描述的Simulink模型万博1manbetx使用自适应查找表块构建模型

进行适配:

  1. 在Simuli万博1manbetxnk编辑器中,将模拟时间指定为

    模拟时间无穷大表示只要引擎的输入输出值发生变化,适应过程就会继续。

  2. 在“Simul万博1manbetxink编辑器”中,单击运行模拟开始适应过程。

    一个图形窗口将打开,显示发动机的容积效率作为进气歧管压力和发动机转速的函数:

    • 左图显示了测量容积效率作为进气歧管压力和发动机转速的函数。

    • 右图显示容积效率,因为它适应时变进气歧管压力和发动机转速。

    在模拟过程中,右侧图中显示的查找表值适应I/O数据的变化。左图和右图在几秒钟后变得相似,如下图所示。

    提示

    模拟过程中,手机号而且自适应表输出在Simulink模型中,块万博1manbetx分别显示单元格号和单元格中的自适应查找表值。

  3. 通过单击暂停模拟暂停模拟

    此操作还导出经过调整的表值吹捧到MATLAB工作空间。

    请注意

    暂停模拟后,经过调整的表值将存储在“自适应查找表”块中。

  4. 检查左图和右图是否匹配。这种相似性表明表值已经适应了时变的I/O数据。

  5. 锁定一个表单元格,以便只适应一个单元格。如果部分数据高度不稳定或算法难以处理,您可能会发现该特性很有用。

    1. 点击运行模拟重新启动模拟。

    2. 双击块。开关的输出块到接口输入端口自适应查找表(nD stairs - fit)块。

      界面中可以查看被锁定单元格的编号手机号块在Simulink模型。万博1manbetx

  6. 在表值适应了时变I/O数据后,您可以继续使用Adaptive Lookup table块作为静态查找表:

    1. 在Simuli万博1manbetxnk模型窗口中,双击启用块。该操作将切换开关,并禁用适配。

    2. 点击运行模拟如果模拟尚未运行,则重新启动模拟。

      在模拟过程中,Adaptive Lookup Table块像静态查找表一样工作,并在输入值变化时继续估计输出值。控件中的当前查找表值自适应表输出块在Simulink模型窗万博1manbetx口中。

    请注意

    禁用自适应后,“自适应查找表”块不会更新存储的表值,显示表值的图形也不会更新。

另请参阅

相关的话题