软件计算非线性ARX模型的输出如何
这个主题描述如何将软件评估非线性估计的输出和使用这个输出计算非线性ARX模型的响应。
评估非线性
评估一个非线性的预测输出为一个特定的回归量的值x要求您首先提取非线性F从模型中解释变量:
F = m.Nonlinearity;x = getreg (m,“所有”、数据)%计算解释变量
评估F(x):
y =评估(F, x)
在哪里x
是一个行向量回归量的值。
你也可以评估预测输出值在多个时间瞬间通过评估F数回归量同时向量:
y =评估(F (x1, x2, x3))
乙状结肠网络的模拟和预测
这个例子显示了软件计算非线性ARX模型的模拟和预测输出结果评估的非线性估计量的输出给定的回归量的值。
网络非线性估计非线性ARX模型与乙状结肠。
负载twotankdataestData = iddata (y, u, 0.2,“Tstart”,0);M = nlarx (estData (1 1 0),“idsig”);
检查模型属性和评估结果。
礼物(M)
非线性ARX模型与输入1输出和输入:u1输出:y1解释变量:线性解释变量y₁, u1输出功能:乙状结肠网络10单元样品时间:0.2秒状态:估计使用NLARX时域数据“estData”。适合估算数据:96.31%(预测聚焦)消防工程:4.804 e-05, MSE: 4.666 e-05
这个命令提供的信息输入和输出变量,解释变量、非线性估计量。
检查非线性估计量。
问= M.Nonlinearity;%相当于M.nl类(NL)%非线性类
ans = ' idSigmoidNetwork '
显示器(NL)%相当于问
问=乙状结肠网络输入:y1 (t - 1), u1 (t)输出:日元(t)非线性函数:乙状结肠网络10单元线性函数:初始化为[-0.161 - -0.105]输出抵消:初始化为0.00119输入:{“y1 (t - 1)”的u1 (t)}输出:{“y1 (t)”} NonlinearFcn:乙状结肠单位及其参数的LinearFcn:线性函数参数的抵消:偏移量参数的
检查乙状结肠网络参数值。
NL.Parameters;
模型的输出是:
日元(t) = f (y1 (t - 1), u1 (t))
在哪里f是乙状结肠网络功能。模型的解释变量日元(t - 1)和u1 (t)输入非线性估计量。时间t是一个离散变量代表kT,在那里k = 0,1,……,
和T采样间隔。在这个例子中,T = 0.2
第二。
输出预测方程是:
yp (t) = f (y1_meas (t - 1), u1_meas (t))
在哪里yp (t)响应时间的预测价值吗t。y1_meas (t - 1)和u1_meas (t)测量的输出和输入值有时吗t - 1和t,分别。
计算预测的反应包括:
计算回归量的值从输入输出数据。
评估给定的非线性回归量的值。
计算响应的预报值使用初始条件和当前输入:
从数据和非线性参数估计模型。
负载twotankdataestData = iddata (y, u, 0.2,“Tstart”,0);M = nlarx (estData (1 1 0),“idsig”);问= M.Nonlinearity;
指定零初始状态。
x0 = 0;
模型有一个状态,因为只有一个延迟日元(t - 1)
。州的数量等于sum (getDelayInfo (M))
。
计算预测的输出时间t= 0。
RegValue = [0, estData.u (1)];%的输入非线性函数fyp_0 =评估(NL, RegValue);
RegValue
解释变量的向量t = 0
。预测的输出yp (t = 0) = f (y1_meas (t = 1), u1_meas (t = 0))。用MATLAB变量,该输出f (0, estData.u (1))
,在那里
y1_meas (t= 0)是测量输出值
t = 0
,也就是estData.y (1)
。u1_meas (t= 1)是第二个输入数据样本
estData.u (2)
。
执行领先一步预测数据的时间值是可用的。
RegMat = getreg (M, [], estData x0);yp =评估(NL, RegMat.Variables);
这段代码获得解释变量的矩阵RegMat
所有样品使用的时间getreg
。RegMat
有尽可能多的行有时间样本,和尽可能多的列作为模型中的解释变量——有两个,在这个例子中。
这些步骤相当于预测响应计算使用预测在一个单一的步骤:
yp_direct =预测(M, estData 1“InitialState”,x0);%比较t = estData.SamplingInstants;情节(t, yp, t, yp_direct.OutputData,“。”)
模型的输出是:
日元(t) = f (y1 (t - 1), u1 (t))
在哪里f是乙状结肠网络功能。模型的解释变量日元(t - 1)和u1 (t)输入非线性估计量。时间t是一个离散变量代表kT,在那里k= 0,1,. .,T采样间隔。在这个例子中,T= 0.2秒。
模拟输出是:
y (t) = f (ys (t - 1), u1_meas (t))
在哪里y (t)响应的模拟值在时间吗t。仿真方程是一样的预测方程,除了过去的输出值y (t - 1)
仿真结果在前面的时间步长,而不是测量输出值。
计算模拟的反应包括:
计算回归量的值从输入输出数据使用模拟输出值。
评估给定的非线性回归量的值。
计算的模拟值响应使用初始条件和当前输入:
从数据和非线性参数估计模型。
负载twotankdataestData = iddata (y, u, 0.2,“Tstart”,0);M = nlarx (estData (1 1 0),“idSigmoidNetwork”);问= M.Nonlinearity;
指定零初始状态。
x0 = 0;
模型有一个状态,因为只有一个延迟日元(t - 1)。州的数量等于sum (getDelayInfo (M))
。
计算模拟的输出时间t= 0,y (t = 0)。
RegValue = [0, estData.u (1)];ys_0 =评估(NL, RegValue);
RegValue是解释变量的向量t= 0。y (t = 0) = f (y1 (t = 1), u1_meas (t = 0))。用MATLAB变量,该输出f (0, estData.u (1))
,在那里
日元(t = 1)的初始状态
x0 (= 0)
。u1_meas (t = 0)输入的值是在哪里t= 0,这是第一个输入数据样本
estData.u (1)
。
计算模拟的输出时间t= 1,y (t= 1)。
RegValue = [ys_0 estData.u (2)];ys_1 =评估(NL, RegValue);
模拟输出y (t = 1) = f (ys (t = 0), u1_meas (t = 1))。用MATLAB变量,该输出f (ys_0 estData.u (2))
,在那里
y (t = 0)输出的是模拟值在t = 0。
u1_meas (t = 1)是第二个输入数据样本estData.u (2)。
计算模拟的输出时间t= 2。
RegValue = [ys_1 estData.u (3)];ys_2 =评估(NL, RegValue);
与输出预测不同,不能使用getreg
所有时间值的回归量计算值。你必须在每次计算解释变量值样本分别因为形成回归量所需的输出样本向量可用迭代,一次一个样本。
这些步骤相当于模拟响应计算在一个单一的步骤使用sim (idnlarx)
:
y = sim (M, estData, x0);
这个例子执行低级计算的非线性响应sigmoidnet
网络功能:
在哪里f是乙状结肠函数,由以下方程:
在F (x)
乙状结肠的输入函数x r
。x
回归量价值和吗r
估计的回归量的意思是,计算数据。
,
,
网络参数存储在模型属性吗M.nl.par
,在那里米
是一个idnlarx
对象。
计算输出值在时间t = 1,当解释变量值x = [estData.y (1) estData.u (2))
:
从样本数据估计模型。
负载twotankdataestData = iddata (y, u, 0.2,“Tstart”,0);M = nlarx (estData [1 1 0], idSigmoidNetwork);问= M.OutputFcn;
给参数赋值的表达式F (x)
。
x = [estData.y (1) estData.u (2)];%解释变量值在t = 1r = NL.Input.Mean;P = NL.LinearFcn.InputProjection;L = NL.LinearFcn.Value ';d = NL.Offset.Value;Q = NL.NonlinearFcn.Parameters.InputProjection;用= NL.NonlinearFcn.Parameters.OutputCoefficient;% (a_1;a₂;…]cVec = NL.NonlinearFcn.Parameters.Translation;% [c₁;c₂;…]bMat = NL.NonlinearFcn.Parameters.Dilation;% (b_1);b_2;…]
计算的线性部分响应(加上偏移量)。
yLinear = P (x r) * * L + d;
计算响应的非线性部分。
f = @ (z) 1 / (exp (- z) + 1);%为乙状结肠匿名函数单元yNonlinear = 0;为k = 1:长度(用)fInput = (x r) * Q * bMat (:, k) + cVec (k);yNonlinear = yNonlinear +用(k) * f (fInput);结束
计算总响应y = F (x) = yLinear + yNonlinear
。
y = yLinear + yNonlinear;
y
等于评估(NL, x)
。
另请参阅
相关的话题
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。