软件如何计算Hammerstein-Wiener模型输出
本主题描述该软件如何评估非线性估计器的输出,并使用该输出计算Hammerstein-Wiener模型的响应。
非线性评估(SISO)
对输入的非线性输出求值u要求您首先从模型中提取输入或输出非线性:
F = m . input非线性;H = m . output非线性;
评估F(u):
w = evaluate(F,u)
在哪里u
表示输入信号在给定时间的值的标量。
您可以通过求值在多个时间时刻计算输出F对于多个时间值,同时使用输入值的列向量:
w = evaluate(F,[u1;u2;u3])
类似地,您可以计算非线性的值H使用线性块的输出x(t)作为输入:
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
而且w2
(W = [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 (模拟输出的)
图表显示y
而且ysim
都是一样的。