这个例子展示了如何使用实验数据来估计模型参数。你估计引擎油门系统的参数。
打开Simulin万博1manbetxk®模型。
open_system (“spe_engine_throttle”)
节气门控制进入发动机进气歧管的空气质量。节流阀体包含一个蝶阀,当驾驶员按下油门踏板时,蝶阀就会打开。这让更多的空气进入气缸,导致发动机产生更大的扭矩。
直流电机控制蝶阀的开启角度。当直流电机断电时,连接到阀门上的弹簧可以使阀门恢复到关闭位置。阀门的旋转量被限制在大约90度。因此,如果一个大的命令输入应用到电机,阀门撞击硬停止阻止它进一步旋转。
电机被建模为一个转矩增益和一个带有参数Kt和input_delay的时滞输入。将蝶阀建模为参数为J、c和k的质量-弹簧-阻尼系统。该系统增强了硬止动,以限制阀开度为90度。模型的组成部分是已知的,但是系统的参数值是不准确的。
双击模型中带有预加载数据块的Parameter Estimation,以打开预配置的估算GUI会话。
节省的估算项目定义了三个实验;的EstimationData
实验用于参数估计,而ValidationData1
,ValidationData2
用于验证估计参数。的EstimateData
实验是策划。
实验信号数据可以从MATLAB®变量、MAT文件、Excel®文件或逗号分隔值文件等多种来源导入。看到实验数据导入及预处理(GUI)为更多的信息。
实验图也用于观察测量数据与当前模型的匹配程度。点击图模型反应在实验区上显示模拟信号数据。
仿真结果表明,模型与实测数据不匹配,模型参数需要估计。
下一步是定义要估计的参数。点击选择参数打开一个对话框,选择要估计的模型参数。这个例子包含四个未知参数;蝶阀的惯性,J
;阻尼系数,c
;返回弹簧常数,k
;运动反应的时间滞后,input_delay
.
因为从物理角度来看,所有这些参数都是正的,所以将它们的下限设为零。同时,设置0.1秒的上限input_delay
参数。您还可以为参数选择一个初始值。这些可以从一些决定参数的公式的快速计算中得到。
单击右箭头切换按钮可以修改参数的最小和最大界限。
选择参数进行估计后,选择要使用的实验进行估计。点击选择实验并选择EstimationData
估计。
您现在可以开始评估,但首先要创建图表来监控评估的进度。点击添加图并选择参数轨迹.这将创建一个图,显示估计参数值在估计期间如何变化。单击视图选项卡来布局绘图,以便实验场景:EstimationData和EstimatedParams都是可见的。
单击估计按钮开始估算。属性可以修改估计选项成本函数组合框并点击更多的选择.
在进行评估时,绘图会更新,并且会出现一个显示评估进展的对话框。进度对话框显示了评估迭代,模型被评估的次数(F-count),以及每个迭代的评估成本。
经过多次迭代后,估计收敛并终止。利用估计参数对模型进行更新,并将估计结果保存在数据浏览器中。要查看评估结果的详细信息,请单击鼠标右键EstimatedParams
并选择开放.
将估计结果与其他实验结果进行对比验证是很重要的。一个成功的估计不仅要匹配用于估计的实验数据,而且要匹配在实验中收集的其他独立的测量数据。
要选择要验证的实验,请单击验证选项卡并单击选择实验.选择两个ValidationData1
和ValidationData2
进行验证。
点击选择的结果选择用于验证的估计结果。选择EstimatedParams
和取消选择使用当前参数值
.
点击验证将估计结果与验证实验进行对比验证。验证使用估计的参数和选定的实验来模拟模型,并创建显示测量和模拟数据的图。使用视图选项卡来布局绘图,以便实验场景:ValidationData1和实验场景:ValidationData2都是可见的。
验证图证实了估计是成功的。图中还显示,估计的参数足以处理各种输入。
学习如何使用。估计模型参数sdo.optimize
命令,看到估算模型参数值(代码).
关闭模式。
bdclose (“spe_engine_throttle”)