主要内容gydF4y2Ba

在命令行中估算非线性ARX模型gydF4y2Ba

在执行以下任务后,可以估计非线性ARX模型:gydF4y2Ba

估计模型使用gydF4y2Banlarx.gydF4y2Ba

采用gydF4y2Banlarx.gydF4y2Ba两个构造和估计非线性ARX模型。每次估计后,gydF4y2Ba验证模型gydF4y2Ba通过将其与其他模型进行比较并模拟或预测模型响应。gydF4y2Ba

基本估计gydF4y2Ba

从最简单的估计开始使用gydF4y2Bam = nlarx(数据,[na nb nk])gydF4y2Ba.例如:gydF4y2Ba

负载gydF4y2BaIddata1.gydF4y2Ba;gydF4y2Ba%na = nb = 2和nk = 1gydF4y2Bam = nlarx(z1,[2 2 1])gydF4y2Ba
m = 1个输出和1个输入的非线性ARX模型输入:u1 Outputs: y1 Regressors:变量y1中的线性回归量,u1所有回归量列表输出函数:1单位小波网络样本时间:0.1秒状态:使用NLARX对时域数据“z1”进行估计。拟合估计数据:68.83%(预测焦点)FPE: 1.975, MSE: 1.885gydF4y2Ba

查看解释变量。gydF4y2Ba

getreg(m)gydF4y2Ba
ans =gydF4y2Ba4×1细胞gydF4y2Ba{'y1(t-1)'} {'y1(t-2)'} {'u1(t-1)'} {'u1(t-2)'}gydF4y2Ba

第二个输入论点gydF4y2Ba[na nb nk]gydF4y2Ba指定模型订单和延迟。默认情况下,输出功能是小波网络gydF4y2Bawavenet.gydF4y2Ba,它将回归器视为其线性和非线性功能的输入。gydF4y2Ba米gydF4y2Ba是一个gydF4y2BaidnlarxgydF4y2Ba目的。gydF4y2Ba

对于MIMO系统,gydF4y2BaNB.gydF4y2Ba,gydF4y2BaNF.gydF4y2Ba, 和gydF4y2BaNK.gydF4y2Ba是gydF4y2Ba纽约gydF4y2Ba-经过-gydF4y2Banu.gydF4y2Ba矩阵。看看gydF4y2Banlarx.gydF4y2Ba参考页面有关MIMO估计的更多信息。gydF4y2Ba

创建一个gydF4y2BanlarxOptionsgydF4y2Ba选项设置并配置gydF4y2Ba焦点gydF4y2Ba属性以最小化模拟错误。gydF4y2Ba

选择= nlarxOptions (gydF4y2Ba'重点'gydF4y2Ba,gydF4y2Ba“模拟”gydF4y2Ba);m = nlarx(z1,[2 2 1],gydF4y2Ba“乙状结肠”gydF4y2Ba,选择);gydF4y2Ba

配置模型回归器gydF4y2Ba

线性回归器gydF4y2Ba

线性回归器表示基于延迟输入和输出变量的线性函数,并将输入提供为模型输出功能。当您使用订单来指定模型时,输入回归器的数量等于gydF4y2BaNA.gydF4y2Ba输出回归器的数量等于gydF4y2BaNB.gydF4y2Ba.订单语法限制了您的连续滞后。您还可以使用以下方法创建线性回归器gydF4y2BalinearreplusserorgydF4y2Ba.当你使用时gydF4y2BalinearreplusserorgydF4y2Ba,可以指定任意的滞后。gydF4y2Ba

多项式回归器gydF4y2Ba

探索包括使用多项式回归器gydF4y2BaPolynomialReogressorgydF4y2Ba除了非线性ARX模型结构中的线性回归。多项式回归器是延迟输入和输出的多项式函数。(看gydF4y2Ba非线性ARX模型订单和延迟gydF4y2Ba).gydF4y2Ba

例如,生成多项式回归达到订单2的。gydF4y2Ba

P = polynomialRegressor ({gydF4y2Ba'y1'gydF4y2Ba,gydF4y2Ba'U1'gydF4y2Ba}, {[1], [2]}, 2);gydF4y2Ba

将多项式回归器附加到线性回归器中gydF4y2BaM.Reogressors。gydF4y2Ba

M.regressors = [M.Regressors; P];getreg(m)gydF4y2Ba
ans =gydF4y2Ba8×1细胞gydF4y2Ba{'y1(t-1)'} {'y1(t-2)'} {'u1(t-1)'} {'u1(t-2)'} {'y1(t-3)'}{'y1(t-5)'} {'y1(t-1)^ 2'} {'u1(t-2)^ 2'}gydF4y2Ba

米gydF4y2Ba现在包括多项式回归器。gydF4y2Ba

查看尺寸gydF4y2Bam.RegressorsgydF4y2Ba数组中。gydF4y2Ba

大小(M.regressors)gydF4y2Ba
ans =gydF4y2Ba1×2gydF4y2Ba3 1gydF4y2Ba

数组现在包含三个回归器对象。gydF4y2Ba

自定义的解释变量gydF4y2Ba

采用gydF4y2BaCustomRogressorgydF4y2Ba构建回归器作为模型输入和输出变量的任意功能。gydF4y2Ba

。例如,创建实现的两个自定义回归器gydF4y2Ba'罪(Y1(T-1)'gydF4y2Ba和gydF4y2Ba'Y1(T-2)。* U1(T-3)'gydF4y2Ba.gydF4y2Ba

c1 = customregressoror({gydF4y2Ba'y1'gydF4y2Ba},{1},@(x)sin(x));c2 = customregressoror({gydF4y2Ba'y1'gydF4y2Ba,gydF4y2Ba'U1'gydF4y2Ba},{2,3},@(x,y)x。* y);M.regressors = [M.regressors; C1; C2];getreg(m)gydF4y2Ba%显示所有回归器gydF4y2Ba
ans =gydF4y2Ba10×1个细胞gydF4y2Ba{y1 (t - 1)的}{‘y1 (2)} {u1 (t - 1)的}{的u1 (2)} {y1(条t - 3)的}{‘y1 (t-5)} {y1 (t - 1) ^ 2的}{u1(2) ^ 2的}{罪(y1 (t - 1))的}{y1(2)。* u1(条t - 3)}gydF4y2Ba

查看自定义回归器的属性。例如,获取阵列中第一个自定义回归器的函数句柄。这个回归器是第四个回归线gydF4y2Ba解释变量gydF4y2Ba数组中。gydF4y2Ba

C1_FCN = M.regressors(4).variablestoregressorfcngydF4y2Ba
C1_fcn =gydF4y2Bafunction_handle具有值:gydF4y2Ba@(x)sin(x)gydF4y2Ba

查看回归器描述。gydF4y2Ba

显示器(m.Regressors (4))gydF4y2Ba
自定义回归线:sin(y1(t-1))variablestoregressorfcn:@(x)sin(x)变量:{'y1'}滞后:{[1]}矢量化:1时间等变:这个集合描述的回归器gydF4y2Ba

结合回归gydF4y2Ba

一旦您创建了线性、多项式和自定义回归器对象,您就可以以任何您想要的方式组合它们,以满足您的评估需求。gydF4y2Ba

为线性和非线性组件指定回归器输入gydF4y2Ba

模型回归器可以作为构成输出功能的映射函数的线性和非线性函数组件的输入作为输入或两者的输入。为了降低模型复杂性并保持估计良好的条件,考虑将一组减少的回归量分配给非线性组件。您还可以将回归器的子集分配给线性组件。管理分配的回归使用表提供了完全的灵活性。您可以将回归器的任何组合分配给每个组件。例如,在过去的输入中指定在过去的输出和非线性中是线性的非线性ARX模型。gydF4y2Ba

m = nlarx(z1,[2 2 1]);DISP(M.regressorusage)gydF4y2Ba
y1:linearfcn y1:nonlinearfcn ____________ _______________ y1(t-1)真正的true y1(t-2)true u1(t-1)trueu1(t-2)true truegydF4y2Ba
M.regressorusage {3:4,1} = FALSE;M.regressorusage {1:2,2} = FALSE;DISP(M.regressorusage)gydF4y2Ba
日元:LinearFcn y1: NonlinearFcn  ____________ _______________ 日元(t - 1)真的假y1(2)真的假u1 (t - 1)假真u1(2)假真的gydF4y2Ba

配置输出功能gydF4y2Ba

下表总结了模型输出函数的可用映射对象。gydF4y2Ba

映射描述gydF4y2Ba 取值(默认映射对象配置)gydF4y2Ba 映射对象gydF4y2Ba
小波网络gydF4y2Ba
(默认)gydF4y2Ba
'wavenet'gydF4y2Ba要么gydF4y2Ba'海浪'gydF4y2Ba wavenet.gydF4y2Ba
一层符合矩形网络gydF4y2Ba 'sigmoidnet'gydF4y2Ba要么gydF4y2Ba'sigm'gydF4y2Ba SIGMOIDNET.gydF4y2Ba
树分区gydF4y2Ba “treepartition”gydF4y2Ba要么gydF4y2Ba'树'gydF4y2Ba 树桩gydF4y2Ba
FgydF4y2Ba是线性的gydF4y2BaxgydF4y2Ba '线性'gydF4y2Ba要么gydF4y2Ba[]gydF4y2Ba要么gydF4y2Ba''gydF4y2Ba 线性gydF4y2Ba

其他可用映射对象包括您创建的多层神经网络和自定义网络。gydF4y2Ba

指定一个多层神经网络使用:gydF4y2Ba

m = nlarx(数据,[na nb nk],nnet)gydF4y2Ba

在哪里gydF4y2BaNNET.gydF4y2Ba是您使用深度学习工具箱™软件创建的神经网络对象。看看gydF4y2Baneuralnet.gydF4y2Ba参考页面。gydF4y2Ba

通过定义调用的函数来指定自定义网络gydF4y2BaGaussunit.mgydF4y2Ba,如gydF4y2BacustomnetgydF4y2Ba参考页面。定义自定义网络对象gydF4y2BaCNETW.gydF4y2Ba并估计模型:gydF4y2Ba

CNetw = customnet (@gaussunit);m = nlarx(数据,[na nb nk],CNetw)gydF4y2Ba

排除输出功能中的线性函数gydF4y2Ba

如果您的模型输出功能包括gydF4y2Bawavenet.gydF4y2Ba,gydF4y2BaSIGMOIDNET.gydF4y2Ba, 要么gydF4y2BacustomnetgydF4y2Ba映射对象,您可以使用以下方式排除线性函数gydF4y2Balinearfcn.use.gydF4y2Ba映射对象的属性。映射对象成为gydF4y2BaFgydF4y2Ba(gydF4y2BaxgydF4y2Ba) =gydF4y2Ba ggydF4y2Ba (gydF4y2Ba 问gydF4y2Ba (gydF4y2Ba xgydF4y2Ba -gydF4y2Ba rgydF4y2Ba )gydF4y2Ba )gydF4y2Ba +gydF4y2Ba ygydF4y2Ba 0gydF4y2Ba , 在哪里gydF4y2BaggydF4y2Ba(。)是非线性功能和gydF4y2BaygydF4y2Ba0gydF4y2Ba是抵消。gydF4y2Ba

请注意gydF4y2Ba

您不能从树分区和神经网络映射对象中排除线性函数。gydF4y2Ba

排除输出功能中的非线性函数gydF4y2Ba

通过将映射对象设置为,将非线性ARX结构配置为只包含映射对象中的线性函数gydF4y2Ba线性gydF4y2Ba.在这种情况下,gydF4y2Ba FgydF4y2Ba (gydF4y2Ba xgydF4y2Ba )gydF4y2Ba =gydF4y2Ba lgydF4y2Ba TgydF4y2Ba (gydF4y2Ba xgydF4y2Ba -gydF4y2Ba rgydF4y2Ba )gydF4y2Ba +gydF4y2Ba ygydF4y2Ba 0gydF4y2Ba 是模型回归器的加权之和加上偏移量。这种模型在纯线性ARX模型和完全灵活的非线性模型之间提供桥梁。gydF4y2Ba

在许多应用中,一个流行的非线性ARX配置使用多项式回归器来建模系统非线性。在这种情况下,系统被认为是(延迟的)输入和输出变量乘积的线性组合。s manbetx 845使用gydF4y2BaPolynomialReogressorgydF4y2Ba命令可以轻松地生成回归器产品和权力的组合。s manbetx 845gydF4y2Ba

例如,假设您知道输出gydF4y2BaygydF4y2Ba(gydF4y2BatgydF4y2Ba)系统是一种线性组合(gydF4y2BaygydF4y2Ba(gydF4y2BatgydF4y2Ba- 1)))gydF4y2Ba2gydF4y2Ba, (gydF4y2BaugydF4y2Ba(gydF4y2BatgydF4y2Ba- 1)))gydF4y2Ba2gydF4y2Ba和gydF4y2BaygydF4y2Ba(gydF4y2BatgydF4y2Ba- 1)gydF4y2BaugydF4y2Ba(gydF4y2BatgydF4y2Ba- 1))。要模拟此类系统,请使用:gydF4y2Ba

P = polynomialRegressor ({gydF4y2Ba'y1'gydF4y2Ba,gydF4y2Ba'U1'gydF4y2Ba},{1,1},2)gydF4y2Ba
P = Order 2 regressors in variables y1, u1 Order: 2 variables: {'y1' ' 'u1'} lag: {[1] [1]} UseAbsolute: [0 0] AllowVariableMix: 0 AllowLagMix: 0 TimeVariable: 't'所描述的回归器gydF4y2Ba
P.AllowVariableMix = true;M = nlarx (z1, P,gydF4y2Ba'线性'gydF4y2Ba);getreg(m)gydF4y2Ba
ans =gydF4y2Ba3×1个细胞gydF4y2Ba{'y1(t-1)^2'} {'u1(t-1)^2'} {'y1(t-1)*u1(t-1)'}gydF4y2Ba

对于更复杂的多项式延迟和混合变量回归器的组合,您也可以使用gydF4y2BaCustomRogressorgydF4y2Ba.gydF4y2Ba

迭代精炼模型gydF4y2Ba

如果您的模型结构包括支持迭代搜索的对象(请参阅万博1manbetxgydF4y2Ba为非线性ARX模型指定估计选项gydF4y2Ba), 您可以使用gydF4y2Banlarx.gydF4y2Ba要改进模型参数:gydF4y2Ba

m1 = nlarx(z1,[2 2 1],gydF4y2Ba'sigmoidnet'gydF4y2Ba);m2 = nlarx(z1,m1);gydF4y2Ba%可以反复运行此命令gydF4y2Ba

你也可以使用gydF4y2BapemgydF4y2Ba为了完善原始模型:gydF4y2Ba

m2 = pem (z1, m1);gydF4y2Ba

检查搜索终止条件gydF4y2Bam.Report.Termination.WhyStopgydF4y2Ba.如果gydF4y2BaWhyStopgydF4y2Ba指示估计已达到最大迭代次数,请尝试重复估计并可能指定更大的值gydF4y2Banlarxoptions.SearchOptions.maxIterations.gydF4y2Ba估计选择:gydF4y2Ba

选择= nlarxOptions;opt.SearchOptions.MaxIterations = 30;m1, m2 = nlarx (z1选择);gydF4y2Ba%运行30个迭代gydF4y2Ba%从m1开始gydF4y2Ba

当。。。的时候gydF4y2Bam.Report.Termination.WhyStopgydF4y2Ba价值是gydF4y2Ba近(本地)最小值,(符号(g)要么gydF4y2Ba沿着搜索方向没有改进,线搜索gydF4y2Ba,验证您的模型,以查看此模型是否充分适合数据。如果不是,则解决方案可能卡在成本函数表面的局部最小值中。尝试调整SearchOptionsgydF4y2Ba.TolerancegydF4y2Ba价值或者gydF4y2BaSearchMethodgydF4y2Ba选项在nlaroptions选项集中,并重复估计。gydF4y2Ba

您还可以尝试扰乱最后一个模型的参数gydF4y2Ba初始化gydF4y2Ba(叫gydF4y2Ba随机化gydF4y2Ba),并使用gydF4y2Banlarx.gydF4y2Ba:gydF4y2Ba

M1 = nlarx(z1, [2 2 1],gydF4y2Ba'sigmoidnet'gydF4y2Ba);gydF4y2Ba%原始模型gydF4y2BaM1p = init (M1);gydF4y2Ba%随机erturbs关于标称值的参数gydF4y2BaM2 = nlarx(z1,m1p);gydF4y2Ba%估计扰动模型的参数gydF4y2Ba

您可以使用使用的迭代命令窗口中迭代搜索的进度gydF4y2Banlarxoptions.display.gydF4y2Ba估计选择:gydF4y2Ba

选择= nlarxOptions (gydF4y2Ba'展示'gydF4y2Ba,gydF4y2Ba“上”gydF4y2Ba);M2 = nlarx (z1、M1p选择);gydF4y2Ba

排除估计gydF4y2Ba

如果在使用各种模型结构和算法设置的许多试验后没有获得令人满意的模型,则数据可能很差。例如,您的数据可能缺少重要的输入或输出变量,并且不充分涵盖系统的所有操作点。gydF4y2Ba

非线性黑匣子系统识别通常需要比线性模型识别更多的数据,以获得有关系统的足够信息。gydF4y2Ba

使用nlarx估计非线性ARX模型gydF4y2Ba

此示例显示了如何使用gydF4y2Banlarx.gydF4y2Ba估计用于测量输入/输出数据的非线性ARX模型。gydF4y2Ba

准备估计数据。gydF4y2Ba

负载gydF4y2BaTwotankdata.gydF4y2Baz = iddata(y,u,0.2);ZE = Z(1:1000);zv = z(1001:3000);gydF4y2Ba

使用不同的模型订单,延迟和非线性设置估算多种模型。gydF4y2Ba

m1 = nlarx(ze,[2 2 1]);m2 = nlarx(ze,[2 2 3]);M3 = nlarx(ze,[2 2 3],wavenet(8));gydF4y2Ba

执行评估的另一种方法是首先配置模型结构,然后评估这个模型。gydF4y2Ba

M4 = idnlarx([2 2 3],sigmoidnet(14));m4.RegressorUsage。(gydF4y2Ba“y1:nonlinearfcn”gydF4y2Ba)(3:4)=假;m4 = nlarx(ze,m4);gydF4y2Ba

通过绘制模型输出和测量输出来比较结果模型。gydF4y2Ba

比较(ZV,M1,M2,M3,M4)gydF4y2Ba

另请参阅gydF4y2Ba

功能gydF4y2Ba

相关话题gydF4y2Ba