# ivstruc

Compute loss functions for sets of ARX model structures using instrumental variable method

## Syntax

```v = ivstruc(ze,zv,NN) v = ivstruc(ze,zv,NN,p,maxsize) ```

## Description

`v = ivstruc(ze,zv,NN)` computes the loss functions for sets of single-output ARX model structures. `NN` is a matrix that defines a number of different structures of the ARX type. Each row of `NN` is of the form

```nn = [na nb nk] ```

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

`ze` and `zv` are `iddata` objects containing input-output data. Only time-domain data is supported. Models for each model structure defined in `NN` are estimated using the instrumental variable (IV) method on data set `ze`. The estimated models are simulated using the inputs from data set `zv`. The normalized quadratic fit between the simulated output and the measured output in `zv` is formed and returned in `v`. The rows below the first row in `v` are the transpose of `NN`, and the last row contains the logarithms of the condition numbers of the IV matrix

`$\sum \varsigma \left(t\right){\phi }^{T}\left(t\right)$`

A large condition number indicates that the structure is of unnecessarily high order (see Ljung, L. System Identification: Theory for the User, Upper Saddle River, NJ, Prentice-Hall PTR, 1999, p. 498).

The information in `v` is best analyzed using `selstruc`.

The routine is for single-output systems only.

`v = ivstruc(ze,zv,NN,p,maxsize)` specifies the computation of condition numbers and the size of largest matrix formed during computations. If `p` is equal to zero, the computation of condition numbers is suppressed. `maxsize` affects the speed/memory trade-off.

### Note

The IV method used does not guarantee that the models obtained are stable. The output-error fit calculated in `v` can then be misleading.

## Examples

collapse all

Create estimation and validation data sets

```load iddata1; ze = z1(1:150); zv = z1(151:300);```

Generate model-order combinations for estimation, specifying ranges for model orders and delays.

`NN = struc(1:3,1:2,2:4);`

Estimate ARX models using the instrumental variable method, and compute the loss function for each model order combination.

`V = ivstruc(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 = iv4(ze,order);`

Create estimation and validation data sets.

```load iddata1; ze = z1(1:150); zv = z1(151:300);```

Generate model-order combinations for estimation, specifying ranges for model orders and a delay of `2` for all model configurations.

`NN = struc(2:3,1:2,2);`

Compute the loss function for each model order combination. Suppress the computation of condition numbers.

`V = ivstruc(ze,zv,NN,0);`

## Algorithms

A maximum-order ARX model is computed using the least squares method. Instruments are generated by filtering the input(s) through this model. The models are subsequently obtained by operating on submatrices in the corresponding large IV matrix.

 Ljung, L. System Identification: Theory for the User, Upper Saddle River, NJ, Prentice-Hall PTR, 1999.

##### Support 