主要内容

软件如何计算Hammerstein-Wiener模型输出

本主题描述该软件如何评估非线性估计器的输出,并使用该输出计算Hammerstein-Wiener模型的响应。

非线性评估(SISO)

对输入的非线性输出求值u要求您首先从模型中提取输入或输出非线性:

F = m . input非线性;H = m . output非线性;

评估Fu):

w = evaluate(F,u)

在哪里u表示输入信号在给定时间的值的标量。

您可以通过求值在多个时间时刻计算输出F对于多个时间值,同时使用输入值的列向量:

w = evaluate(F,[u1;u2;u3])

类似地,您可以计算非线性的值H使用线性块的输出xt)作为输入:

y = evaluate(H,x)

非线性评估(MIMO)

对于MIMO模型,F而且H是长度的向量ν而且纽约,分别。ν输入的数量和纽约是输出的数量。在这种情况下,必须分别计算每个非线性的预测输出。

例如,假设你估计一个双输入模型:

M = nlhw(data,[nb nf nk],[idWaveletNetwork; id多项式1d],“idSaturation”

在输入非线性中:

F = m .输入非线性F1 = F(1);F2 = f (2);

F是一个包含两个元素的向量函数:F = [F1 (u1_value); F2 (u2_value)],在那里F1是一个idWaveletNetwork对象和F2是一个idPolynomial1D对象。u1_value第一个输入信号是和吗u2_value是第二个输入信号。

评估F通过评估F1而且F2另外:

w1 = evaluate(F(1),u1_value);w2 = evaluate(F(2),u2_value);

线性块的总输入,w的向量w1而且w2W = [w1 w2]).

类似地,您可以计算非线性的值H

H = m . output非线性;

Hammerstein-Wiener模型的模拟

这个例子展示了软件如何通过首先计算输入和输出非线性估计器的输出来评估模拟输出。

估计一个Hammerstein-Wiener模型。

负载twotankdataestData = iddata(y,u,0.2);M = nlhw(estData,[1 5 3], idpiecewislinear, id多项式1d);

提取输入非线性、线性模型和输出非线性作为独立变量。

uNL = m . input非线性;linModel = m .线性模型;yNL = m . output非线性;

模拟输入非线性估计器的输出。

输入模拟数据

u = estData.u;

计算输入非线性的输出

w = evaluate(uNL,u);

计算线性模型对输入的响应w零初始条件。

x = sim(linModel,w);

计算Hammerstein-Wiener模型的输出作为输出非线性估计器对输入的输出x

y = evaluate(yNL,x);

上一组命令相当于直接模拟的输出使用sim卡命令。

ysim = sim(M,u);

情节y而且ysim,分别得到手动和直接仿真结果。

time = estData.SamplingInstants;情节(时间,y,“b”、时间、ysim“——r”);包含(“时间”);ylabel (模拟输出的

图中包含一个轴对象。axis对象包含2个line类型的对象。

图表显示y而且ysim都是一样的。

另请参阅

相关的话题