主要内容

本页采用了机器翻译。点击此处可查看英文原文。

利用线性 OE 模型初始化哈默斯坦-维纳模型的估计

本示例演示了如何使用线性 OE 模型对哈默斯坦-维纳模型进行估计。

加载估计数据。

load throttledata.mat

该命令将数据对象 ThrottleData 加载到工作区中。该对象包含从发动机节气门系统采集的输入和输出采样数据,采样率为 100Hz。

一台 DC 电机控制节气门系统中蝶阀的开启角度。一个步进信号(以伏特为单位)驱动 DC 电机。输出值为阀门的角位置(单位为度)。

将数据绘制成图,以便查看和分析数据特征。

plot(ThrottleData)

MATLAB figure

在 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)

MATLAB figure

线性模型能够描述线性工作范围内的上升和稳定过程,但未考虑 90 度时的输出饱和现象。

对哈默斯坦-维纳模型进行估计,以对输出饱和现象进行建模。

NonlinearModel = nlhw(ThrottleData, LinearModel, [], idSaturation);

该软件利用线性模型的阶数和延迟来确定非线性模型的阶数。此外,该软件使用了线性传递函数的 BF 多项式。

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

compare(ThrottleData, NonlinearModel)

MATLAB figure

另请参阅

主题