主要内容

用线性ARX模型初始化非线性ARX模型

这个例子展示了如何用线性ARX模型估计非线性ARX模型。

加载估计数据。

加载throttledata.mat

该命令加载数据对象throttledata.进入工作区。该对象包含从发动机节流系统收集的输入和输出样本,采样频率为100hz。

在节流系统中,直流电机控制蝶阀的开启角度。一个步进信号(单位为伏特)驱动直流电机。输出是阀门的角位置(以度数表示)。

绘制数据图,查看和分析数据特征。

情节(ThrottleData)

图中包含2个轴对象。标题为节流阀位置的轴对象1包含一个类型为线的对象。该对象表示ThrottleData。带有标题的轴对象2步骤命令包含一个类型为line的对象。该对象表示ThrottleData。

在15-90度的正常工作范围内,输入和输出变量呈线性关系。你用一个低阶的线性模型来模拟这种关系。

在节气门系统中,硬终止将阀门位置限制在一起90度和弹簧将阀门带到15当直流电机关闭时的度数。这些物理部件引入了线性模型无法捕捉的非线性。

估计一个ARX模型来模拟这个单输入单输出系统在正常工作范围内的线性行为。

趋势数据,因为线性模型不能捕捉偏移。

Tr = getTrend (ThrottleData);Tr.OutputOffset = 15;DetrendedData =去趋势(ThrottleData、Tr);

估计一个线性ARX模型,na=2, nb=1, nk=1。

选择= arxOptions (“焦点”“模拟”);线性模型= arx(DetrendedData,[2 1 1],opt);

将模拟模型的响应与估计数据进行比较。

比较(DetrendedData LinearModel)

图中包含一个轴对象。轴对象包含两个类型为line的对象。这些对象代表DetrendedData(节流阀位置),线性模型:89.31%。

线性模型捕获线性工作范围内的上升和稳定行为,但不考虑90度时的输出饱和。

估计一个非线性ARX模型来模拟输出饱和。

optNL = nlarxOptions (“焦点”“模拟”);NonlinearModel = nlarx (ThrottleData LinearModel,'idsigmoidnetwork',optnl);

该软件对非线性模型的阶数采用线性模型的阶数和时滞。此外,该软件计算的线性函数sigmoidnet非线性估计量。

将非线性模型与估计数据进行比较。

比较(ThrottleData NonlinearModel)

图中包含一个轴对象。轴对象包含两个类型为line的对象。这些对象代表ThrottleData(节流阀位置),非线性模型:96.96%。

该模型捕获了非线性效应(输出饱和),并提高了对数据的整体拟合。

相关话题