使用n-D自适应查找表建模引擎
目标
在本例中,您将学习如何使用n-D自适应查找表捕获引擎的时变行为。您可以使用Simulink完成以下任务金宝app®软件:
配置一个自适应查找表块来对系统建模。
模拟模型以动态更新查找表值。
将适应的查找表值导出到MATLAB®工作区。
在调整期间锁定表中的特定单元格。
关闭适配进程,将自适应查找表作为静态查找表使用。
关于数据
在本例中,使用中的数据vedata.mat
它包含以下从发动机测量的变量:
X
-进气歧管压力范围内的10个输入断点[10,100]Y
- 36个输入断点的发动机转速范围[0,7000]Z
- 10x36的发动机容积效率表数据矩阵要了解有关断点和表数据的更多信息,请参见解析查找表.
发动机的输出容积效率是时变的,并且是两个输入-进气歧管压力和发动机转速的函数。mat文件中的数据用于为引擎生成时变输入和输出(I/O)数据。
在下一节中,您将打开一个预配置的Simulink模型。金宝app
发动机数据模型
加载引擎数据。
负载vedata.mat
打开预配置的模型。
open_system (“enginetable1_data”)
使用自适应查找表块构建模型
在本教程的这一部分中,您将学习如何使用Adaptive Lookup Table块构建引擎模型。
Simulink模型中的实验数据子系统在仿真过程中生成时变I/O数据。金宝app
该命令还装载变量
X
,Y
和Z
到MATLAB工作空间。要了解有关此数据的更多信息,请参见关于数据.在Simulink模型中添加一个自适应查找表块。金宝app
打开Simulin金宝appk库浏览器。
在MATLAB提示符下,输入
slLibraryBrowser
.打开金宝appSimulink Design Optimization™图书馆。
在库窗格,展开金宝appSimulink设计优化节点。
在金宝appSimulink设计优化库树,点击自适应查找表.
从自适应查找表库中拖拽自适应查找表(nD - fit)块到Simulink模型窗口。金宝app
双击“自适应查找表(nD step - fit)”块,打开“功能块参数:自适应查找表(nD step - fit)”对话框。
在“功能块参数”对话框中:
指定以下块参数:
表断点(单元格数组)——输入
{[X;110年],[Y;7200]}
指定输入断点的范围。表数据(初始)——输入
兰特(36)
指定随机数作为容积效率的初始表值。表编号数据——输入
重塑(1:360 10 36)
为表单元格指定编号方案。
验证
样本均值(含遗忘)
在适应方法下拉列表。输入
0.98
在适应增益(0 ~ 1)字段来指定遗忘因子为样本均值(含遗忘)
适应算法。自适应增益接近1表示查找表值对输入噪声具有较高的鲁棒性。要了解更多关于适应增益的信息,请参见有遗忘的样本均值在选择适应方法.
选择将调整后的表作为输出复选框。
此操作将添加一个名为
吹捧
到自适应查找表块。您可以使用此端口绘制正在调整的表值。选择增加适配启用/禁用/复位端口复选框。
此操作将添加一个名为
启用
到自适应查找表块。该端口用于开启或关闭适配进程。选择添加单元锁启用/禁用端口复选框。
此操作将添加一个名为
锁
到自适应查找表块。在适应过程中使用该端口锁定单元格。验证
忽略
在超范围处理下拉列表。此选择指定软件在适应期间忽略输入断点范围之外的任何时变输入。
提示
要了解更多信息,请参见自适应查找表(nD - step - fit)块引用页。
配置完成后,块参数对话框如下图所示。
点击好吧关闭“功能块参数”对话框。
现在,S金宝appimulink模型看起来与下图相似。
将输入和输出数据分配给引擎模型
U
和Y
端口的实验数据块u
和y
自适应查找表块的端口。使用Simulink块设计一个逻辑来启用或金宝app禁用适配过程。将逻辑连接到Adaptive Lookup Table块,如下图所示。
这个逻辑输出一个初始值1,它启用了适应过程。
设计一个逻辑来在适应期间锁定单元格。将逻辑连接到Adaptive Lookup Table块,如下图所示。
在Simuli金宝appnk库浏览器中,选择金宝app>汇库,并将显示块拖动到模型窗口。连接模块,如下图所示。
在仿真过程中,显示模块显示如下:
显示
block -显示当前单元格的值。Display1
block -显示当前正在调整的单元格的数量。
编写一个MATLAB函数来绘制查找表值,因为它们在模拟过程中适应。
另外,类型
enginetable
在MATLAB提示符下打开预配置的Simulink模型。金宝app的效率表面
子系统包含一个绘制查找表值的函数,如下图所示。连接To Workspace块以导出已调整的表值:
在Simuli金宝appnk库浏览器中,选择金宝app>汇库,并将To Workspace块拖到模型窗口。
要了解有关此块的更多信息,请参阅到工作空间块参考页中的Simulink文档。金宝app
双击To Workspace块打开Sink块参数对话框,然后键入
吹捧
在变量名字段。点击好吧.
将To Workspace块连接到自适应查找表输出信号
吹捧
,如下图所示。
现在,您已经构建了用于更新和查看自适应查找表值的模型。您现在必须模拟模型以启动适配,如使用时变I/O数据调整查找表值.
使用时变I/O数据调整查找表值
在本教程的这一部分中,您将学习如何更新查找表值以适应随时间变化的输入和输出值。
如前所述,您必须已经构建了Simulink模型金宝app使用自适应查找表块构建模型.
执行适配:
在Simuli金宝appnk编辑器中,将仿真时间指定为
正
.仿真时间为无穷大,表示只要引擎的输入输出值发生变化,适应过程就会继续进行。
在“Simul金宝appink编辑器”中单击运行下模拟开始适应过程。
打开一个图形窗口,显示发动机的容积效率作为进气歧管压力和发动机转速的函数:
左图显示了测量的容积效率作为进气歧管压力和发动机转速的函数。
右图显示体积效率,因为它适应时变进气歧管压力和发动机转速。
在模拟过程中,右图上显示的查找表值适应I/O数据的变化。左图和右图在几秒钟后彼此相似,如下图所示。
提示
在模拟过程中,
手机号
和自适应表输出
Simulink模型中的块分金宝app别显示单元格编号和单元格中已适应的查找表值。单击暂停模拟暂停下模拟.
此操作还导出已调整的表值
吹捧
到MATLAB工作空间。请注意
暂停模拟后,已调整的表值存储在Adaptive Lookup table块中。
检查左图和右图是否匹配。这种相似性表明表值已经适应了随时间变化的I/O数据。
锁定一个表格单元格,以便只适应一个单元格。如果部分数据非常不稳定或算法难以处理,您可能会发现此特性很有用。
点击运行下模拟重新启动模拟。
双击
锁
块。这个动作拨动开关并提供输出在
Block to the锁
的输入端口自适应查找表(nD - step - fit)
块。可以查看锁定单元格的编号
手机号
块中。金宝app
在表值适应时变I/O数据之后,您可以继续使用Adaptive Lookup table块作为静态查找表:
在Simuli金宝appnk模型窗口中,双击
启用
块。这个动作拨动开关,并禁用自适应。点击运行下模拟重新启动模拟(如果模拟尚未运行)。
在模拟过程中,自适应查找表块像静态查找表一样工作,并在输入值发生变化时继续估计输出值。控件中可以看到当前查找表的值
自适应表输出
块在Simulink模型窗金宝app口中。
请注意
禁用适配后,Adaptive Lookup Table块不会更新存储的表值,显示表值的图也不会更新。