# arxstruc

Compute loss functions for single-output ARX models

## Syntax

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

## 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] ```

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

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

collapse all

Create an ARX model for generating data.

```A = [1 -1.5 0.7]; B = [0 1 0.5]; m0 = idpoly(A,B);```

Generate random input and additive noise signals.

```u = iddata([],idinput(400,'rbs')); e = iddata([],0.1*randn(400,1));```

Simulate the model output using the defined input and error signals.

```y = sim(m0,[u e]); z = [y,u];```

Generate model-order combinations for estimation. Specify a delay of `1` for all models, and a model order range between `1` and `5` for `na` and `nb`.

`NN = struc(1:5,1:5,1);`

Estimate ARX models and compute the loss function for each model order combination. The input data is split into estimation and validation data sets.

`V = arxstruc(z(1:200),z(201:400),NN);`

Select the model order with the best fit to the validation data.

`order = selstruc(V,0);`

Estimate an ARX model of selected order.

`M = arx(z,order);`

Create estimation and validation data sets.

```load co2data; Ts = 0.5; % Sample time is 0.5 min ze = iddata(Output_exp1,Input_exp1,Ts); zv = iddata(Output_exp2,Input_exp2,Ts);```

Generate model-order combinations for:

• `na` = `2:4`

• `nb` = `2:5` for the first input, and `1` or `4` for the second input.

• `nk` = `1:4` for the first input, and `0` for the second input.

`NN = struc(2:4,2:5,[1 4],1:4,0);`

Estimate an ARX model for each model order combination.

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

Select the model order with the best fit to the validation data.

`order = selstruc(V,0);`

Estimate an ARX model of selected order.

`M = arx(ze,order);`

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