Compute and compare loss functions for single-output ARX models


V = arxstruc(ze,zv,NN)
V = arxstruc(ze,zv,NN,maxsize)



Estimation data set can be iddata or idfrd object.


Validation data set can be iddata or idfrd object.


Matrix defines the number of different ARX-model structures. Each row of NN is of the form:

nn = [na nb nk]

Specifies the maximum number of elements in a segment when input-output data is split into segments.

If larger matrices are needed, the software will use loops for calculations. Use this option to manage the trade-off between memory management and program execution speed. The original data matrix must be smaller than the matrix specified by maxsize.

maxsize must be a positive integer.


    Note:   Use arxstruc for single-output systems only. arxstruc supports both single-input and multiple-input systems.

V = arxstruc(ze,zv,NN) returns V, which contains the loss functions in its first row. The remaining rows of V contain the transpose of NN, so that the orders and delays are given just below the corresponding loss functions. The last column of V contains the number of data points in ze.

V = arxstruc(ze,zv,NN,maxsize) uses the additional specification of the maximum data size.

with the same interpretation as described for arx. See struc for easy generation of typical NN matrices.

The output argument V is best analyzed using selstruc. The selection of a suitable model structure based on the information in v is normally done using selstruc.


This example uses the simulation data from a second-order idpoly model with additive noise. The data is split into two parts, where one part is the estimation data and the other is the validation data. You select the best model by comparing the output of models with orders ranging between 1 and 5 with the validating data. All models have an input-to-output delay of 1.

% Create an ARX model for generaing data:
A = [1 -1.5 0.7]; B = [0 1 0.5];
m0 = idpoly(A,B);
% Generate a random input signal:
u = iddata([],idinput(400,'rbs'));
e = iddata([],0.1*randn(400,1));
% Simulate the output signal from the model m0:
y = sim(m0, [u e]);
z = [y,u]; % analysis data
NN = struc(1:5,1:5,1);
V = arxstruc(z(1:200),z(201:400),NN);
nn = selstruc(V,0);
m = arx(z,nn);

More About

collapse all


Each of ze and zv is an iddata object containing output-input data. Frequency-domain data and idfrd objects are also supported. Models for each of the model structures defined by NN are estimated using the data set ze. The loss functions (normalized sum of squared prediction errors) are then computed for these models when applied to the validation data set zv. The data sets ze and zv need not be of equal size. They could, however, be the same sets, in which case the computation is faster.

See Also

| | | |

Was this topic helpful?