利用线性 OE 模型初始化哈默斯坦-维纳模型的估计
本示例演示了如何使用线性 OE 模型对哈默斯坦-维纳模型进行估计。
加载估计数据。
load throttledata.mat该命令将数据对象 ThrottleData 加载到工作区中。该对象包含从发动机节气门系统采集的输入和输出采样数据,采样率为 100Hz。
一台 DC 电机控制节气门系统中蝶阀的开启角度。一个步进信号(以伏特为单位)驱动 DC 电机。输出值为阀门的角位置(单位为度)。
将数据绘制成图,以便查看和分析数据特征。
plot(ThrottleData)

在 15-90 度的正常工作范围内,输入变量与输出变量之间呈线性关系。您使用一个低阶线性模型来对这种关系进行建模。
在节气门系统中,一个硬限位将阀门位置限制在 90 度,当 DC 电机关闭时,弹簧会将阀门复位至 15 度。这些物理组件引入了线性模型无法捕捉的非线性效应。
对哈默斯坦-维纳模型进行估计,以建模该单输入单输出系统在正常工作范围内的线性行为。
% Detrend the data because linear models cannot capture offsets. Tr = getTrend(ThrottleData); Tr.OutputOffset = 15; DetrendedData = detrend(ThrottleData,Tr); % Estimate a linear OE model with na=2, nb=1, nk=1. opt = oeOptions('Focus','simulation'); LinearModel = oe(DetrendedData,[2 1 1],opt);
将仿真模型的响应结果与估计数据进行比较。
compare(DetrendedData, LinearModel)

线性模型能够描述线性工作范围内的上升和稳定过程,但未考虑 90 度时的输出饱和现象。
对哈默斯坦-维纳模型进行估计,以对输出饱和现象进行建模。
NonlinearModel = nlhw(ThrottleData, LinearModel, [], idSaturation);
该软件利用线性模型的阶数和延迟来确定非线性模型的阶数。此外,该软件使用了线性传递函数的 B 和 F 多项式。
将非线性模型与数据进行比较。
compare(ThrottleData, NonlinearModel)
