在线递归最小二乘估计
这个例子展示了如何实现一个在线递归最小二乘估计器。你估计一个内燃机的非线性模型,并使用递归最小二乘来检测发动机惯性的变化。
发动机模型
发动机模型包括节气门、歧管系统和燃烧系统的非线性元素。模型输入为油门角,模型输出为发动机转速(rpm)。
open_system (“iddemo_engine”);sim卡(“iddemo_engine”)
建立了发动机模型,采用脉冲序列驱动节流阀从开启到关闭的角度。发动机的响应是非线性的,特别是当油门打开和关闭时,发动机的rpm响应时间是不同的。
在模拟开始100秒时,发动机出现故障,导致发动机惯性增加(发动机惯性,J
的模型iddemo_engine /车辆动力学
块)。惯性变化导致发动机在开启和关闭油门位置的响应时间增加。你使用在线递归最小二乘来检测惯性变化。
open_system (“iddemo_engine / trpm”)
估计模型
发动机模型是一个二阶阻尼系统,具有输入和输出非线性,以考虑在不同油门位置的不同响应时间。使用递归最小二乘块来识别以下对引擎建模的离散系统:
由于估计模型没有明确地包括惯性,我们期望值随惯性变化而变化。我们使用变化值来检测惯性变化。
该引擎具有高达16Hz的显著带宽。设置估计器采样频率为2*160Hz或采样时间为秒。
递归最小二乘估计块设置
的估计模型中的项为模型的解释变量输入到递归最小二乘块来估计值。方法中所示的回归器可以实现iddemo_engine /解释变量
块。
open_system (“iddemo_engine /解释变量”);
配置递归最小二乘估计块:
最初的估计:一个也没有。软件默认值为1。
参数个数: 3个,每人一个回归量系数。
参数协方差矩阵: 1,初始猜测1的不确定度。具体而言,将估计的参数视为方差为1的随机变量。
样品时间:.
点击算法和块选项设置评估选项。
估算方法:
遗忘因子
遗忘因子: 1-2e-4。因为估计期望值随惯性变化,将遗忘因子设置为小于1的值。选择= 1-2e-4,对应于内存时间常数或者15秒。15秒的记忆时间确保从打开和关闭油门位置的重要数据用于估计,因为位置每10秒改变一次。
选择输出估计误差复选框。您使用这个块输出来验证估计。
选择输出参数协方差矩阵复选框。您使用这个块输出来验证估计。
清除添加启用端口复选框。
外部复位:
没有一个
.
验证估计模型
的错误
的输出递归最小二乘估计
Block给出了估计模型的一步误差。这一误差小于5%,表明对于超前一步的预测,估计模型是准确的。
open_system (' iddemo_engine /错误(%)')
参数协方差矩阵的对角线给出了参数。的方差相对于参数值较小,表明对估计值有良好的置信度。相比之下,方差相对于参数值较大,表明这些值的置信度较低。
虽然小的估计误差和协方差给了模型被正确估计的信心,但它是有限的,因为误差是一个提前一步的预测器。更严格的检查是在仿真模型中使用估计模型,并与实际模型输出进行比较。的估计模型部分实现了这一点。金宝app
的Regressors1
Block与解释变量
块在递归估计器中的使用。唯一的区别是y信号不是从植物中测量的,而是从估计模型的输出中反馈过来的。回归函数块的输出乘以估计值给予的价值对发动机转速的估计。
open_system (“iddemo_engine / trpm Est”)
估计的模型输出与模型输出匹配得很好。稳态值接近,瞬态行为略有不同,但差异不显著。请注意,当发动机惯性改变100秒后,估计的模型输出与模型输出略有不同。这意味着所选择的回归量不能捕捉模型在惯性变化后的行为。这也表明了系统行为的变化。
估计的模型输出与较低的一步领先误差和参数协方差相结合,使我们对递归估计器有信心。
检测发动机惯性变化
发动机模型被设置为在模拟中引入100秒的惯性变化。递归估计器可用于检测惯性的变化。
递归估计器需要大约50秒才能收敛到初始参数值集。为了检测惯性变化,我们检查模型系数的影响估计模型的项。
open_system ('iddemo_engine/检测惯性变化')
的协方差, 0.05562相对于参数值0.1246较大,表明对估计值的置信度较低。的时间图说明了协方差大的原因。具体地说是否随着油门位置的变化而变化,表明估计的模型不够丰富,无法完全捕捉不同油门位置的不同上升时间,需要进行调整.然而,我们可以用这个来确定惯量变化为的平均值随着惯性的改变而改变。的移动平均值上可以使用阈值检测器参数来检测发动机惯性的变化。
bdclose (“iddemo_engine”)