Compute and compare loss functions for single-output ARX models
V = arxstruc(ze,zv,NN)
V = arxstruc(ze,zv,NN,maxsize)
ze
Estimation data set can be iddata
or idfrd
object.
zv
Validation data set can be iddata
or idfrd
object.
NN
Matrix defines the number of different ARX-model structures.
Each row of NN
is of the form:
nn = [na nb nk]
maxsize
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 |
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);