在线递归最小二乘估计
此示例显示了如何实现在线递归最小二乘估计器。您可以估计内燃机的非线性模型,并使用递归最小二乘正方形来检测发动机惯性的变化。
发动机型号
发动机模型包括节气门和歧管系统的非线性元素以及燃烧系统。模型输入是节气门角,模型输出是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/recressor');
配置递归最小二乘估计器块:
初始估计:没有任何。默认情况下,该软件的值为1。
参数数:3,每个回归系数。
参数协方差矩阵:1,初始猜测中的不确定性量1.具体地,将估计参数视为具有方差1的随机变量。
采样时间:。
点击算法和块选项设置估计选项:
估计方法:
忘记因素
忘记因素:1-2E-4。自估计预计值随惯性变化,将遗忘因子设置为小于1的值。= 1-2e-4,对应于一个记忆时间常数或15秒。15秒的内存时间可确保从开放和封闭的节气门位置使用的重要数据进行估计,因为该位置每10秒更改。
选择输出估计误差复选框。您使用此块输出来验证估计。
选择输出参数协方差矩阵复选框。您使用此块输出来验证估计。
清除添加启用端口复选框。
外部重置:
没有任何
。
验证估计模型
这错误
输出递归最小二乘估计器
块给出了估计模型的一步误差。此误差小于5%,表明对于一步预测,估计的模型是准确的。
open_system('iddemo_engine/error(%)')
参数协方差矩阵的对角线给出了该方差参数。这相对于参数值,方差较小,表明对估计值的信心良好。相反,相对于参数值,方差很大,表明对这些值的置信度较低。
虽然小估计误差和协方差使该模型正确估算正确,但它的限制是因为该误差是一个单步预测指标。更严格的检查是在仿真模型中使用估计模型,并与实际模型输出进行比较。这估计模型Simulink模型的部分实现金宝app了这一点。
这回归器1
块与回归器
递归估计器中的块使用。唯一的区别是,Y信号不是从植物中测量的,而是从估计模型的输出中喂养的。回归器块的输出乘以估计给出的值发动机速度的估计。
open_system('iddemo_engine/trpm est')
估计的模型输出与模型输出匹配。稳态值是接近的,瞬态行为略有不同,但没有显着。请注意,100秒后,当发动机惯性更改时,估计的模型输出与模型输出略有不同。这意味着所选回归器在惯性变化后也无法捕获模型的行为。这也表明系统行为发生了变化。
估计的模型输出与低一步误差和参数协方差相结合,使我们对递归估计器的信心。
检测引擎惯性的变化
发动机模型设置为以将惯性更改引入100秒钟。递归估计器可用于检测惯性的变化。
递归估计器大约需要50秒才能收敛到一组参数值集。为了检测惯性变化,我们检查了影响的模型系数估计模型的术语。
open_system('iddemo_engine/检测惯性变化')
协方差,0.05562相对于参数值0.1246,表示估计值的置信度较低。时间情节显示为什么协方差很大。具体来说随着节气门位置的变化而变化,表明估计模型不足以在不同的油门位置完全捕获不同的上升时间,并且需要调整。但是,我们可以使用它来识别惯性变化作为平均值随着惯性的变化而变化。您可以在移动平均值上使用阈值检测器参数检测引擎惯性的变化。
bdclose('iddemo_engine')