使用线性OE模型初始化Hammerstein-Wiener模型
这个例子展示了如何使用线性OE模型估计Hammerstein-Wiener模型。
加载估计数据。
负载throttledata.mat
该命令用于加载数据对象ThrottleData
进入工作区。该物体包含从发动机油门系统收集的输入和输出样本,以100Hz的频率采样。
在节气门系统中,直流电动机控制蝶阀的开启角度。一个步进信号(以伏特为单位)驱动直流电机。输出是阀门的角度位置(以度为单位)。
绘制数据图,查看和分析数据特征。
情节(ThrottleData)
在15-90度的正常工作范围内,输入和输出变量呈线性关系。您使用低阶线性模型来模拟这种关系。
在节气门系统中,硬停止限制阀门位置为90
度,弹簧使阀门恢复15
度时,直流电机关闭。这些物理成分引入了线性模型无法捕捉的非线性。
估计一个Hammerstein-Wiener模型来模拟这个单输入单输出系统在正常工作范围内的线性行为。
去趋势化数据,因为线性模型无法捕获偏移量。Tr = getTrend(ThrottleData);Tr.OutputOffset = 15;DetrendedData = dettrend (ThrottleData,Tr);估计一个线性OE模型,na=2, nb=1, nk=1。opt = oeOptions(“焦点”,“模拟”);线性模型= oe(DetrendedData,[2 1 1],opt);
将模拟模型响应与估计数据进行比较。
比较(DetrendedData LinearModel)
线性模型捕捉了线性工作范围内的上升和下降行为,但不考虑90度时的输出饱和。
估计一个Hammerstein-Wiener模型来模拟输出饱和度。
NonlinearModel = nlhw(ThrottleData, LinearModel, [], idSaturation);
该软件利用线性模型的阶数和时延来计算非线性模型的阶数。此外,该软件使用B而且F线性传递函数的多项式。
将非线性模型与数据进行比较。
比较(ThrottleData NonlinearModel)