# arxstruc

Compute and compare loss functions for single-output ARX models

## Syntax

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

## Arguments

`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.

## Description

 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`.

## Examples

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); ```

collapse all

### Tips

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.