主要内容

用线性OE模型初始化Hammerstein-Wiener模型

这个例子展示了如何使用线性OE模型估计Hammerstein-Wiener模型。

加载估计数据。

负载throttledata.mat

这个命令加载数据对象ThrottleData进入工作区。该对象包含从发动机油门系统收集的输入和输出样本,以100Hz的频率采样。

直流电动机控制节气门系统中蝶阀的打开角度。步进信号(以伏特为单位)驱动直流电机。输出是阀门的角度位置(以度为单位)。

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

情节(ThrottleData)

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

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

在节流系统中,硬停止限制阀门的位置90度,弹簧使阀门合上15直流电机关闭时的度数。这些物理成分引入了线性模型无法捕捉到的非线性。

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

为数据趋势化,因为线性模型不能捕获偏移量。Tr = getTrend(ThrottleData);Tr.OutputOffset = 15;DetrendedData =趋势(ThrottleData,Tr);估计线性OE模型,na=2, nb=1, nk=1。opt = oeOptions(“焦点”“模拟”);线性模型= oe(DetrendedData,[2 1 1],opt);

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

比较(DetrendedData LinearModel)

图中包含一个axes对象。坐标轴对象包含两个line类型的对象。这些对象表示验证数据(节流阀位置),线性模型:87.48%。

线性模型捕捉了在线性工作范围内的上升和沉降行为,但没有考虑90度时的输出饱和。

估计一个Hammerstein-Wiener模型来模拟输出饱和度。

非线性模型= nlhw(ThrottleData,线性模型,[],id饱和度);

该软件利用线性模型的阶数和时延来求解非线性模型的阶数。此外,本软件采用B而且F线性传递函数的多项式。

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

比较(ThrottleData NonlinearModel)

图中包含一个axes对象。坐标轴对象包含两个line类型的对象。这些对象表示验证数据(节流阀位置),非线性模型:95.7%。

相关的话题