## Subreferencing Models

### What Is Subreferencing?

You can use subreferencing to create models with subsets of inputs and outputs from existing multivariable models. Subreferencing is also useful when you want to generate model plots for only certain channels, such as when you are exploring multiple-output models for input channels that have minimal effect on the output.

The toolbox supports subreferencing operations for `idtf`

,
`idpoly`

, `idproc`

,
`idss`

, and `idfrd`

model objects.

Subreferencing is not supported for `idgrey`

models. If you
want to analyze the sub-model, convert it into an `idss`

model first, and then subreference the I/Os of the `idss`

model. If you want a grey-box representation of a subset of I/Os, create a new
`idgrey`

model that uses an ODE function returning the
desired I/O dynamics.

In addition to subreferencing the model for specific combinations of measured inputs and output, you can subreference dynamic and noise models individually.

### Limitation on Supported Models

Subreferencing nonlinear models is not supported.

### Subreferencing Specific Measured Channels

Use the following general syntax to subreference specific input and output channels in models:

model(outputs,inputs)

In this syntax, `outputs`

and `inputs`

specify channel indexes or channel names.

To select all output or all input channels, use a colon (`:`

).
To select no channels, specify an empty matrix (`[]`

). If you
need to reference several channel names, use a cell array of character
vectors.

For example, to create a new model `m2`

from
`m`

from inputs `1`

(`'power'`

) and `4`

(`'speed'`

) to output number `3`

(`'position'`

), use either of the following equivalent
commands:

m2 = m('position',{'power','speed'})

or

m2 = m(3,[1 4])

For a single-output model, you can use the following syntax to subreference specific input channels without ambiguity:

m3 = m(inputs)

Similarly, for a single-input model, you can use the following syntax to subreference specific output channels:

m4 = m(outputs)

### Separation of Measured and Noise Components of Models

For linear models, the general symbolic model description is given by:

$$y=Gu+He$$

*G* is an operator that takes the measured inputs
*u* to the outputs and captures the system
dynamics.

*H* is an operator that describes the properties of the
additive output disturbance and takes the hypothetical (unmeasured) noise source
inputs to the outputs. *H* represents the noise model. When
you specify to estimate a noise model, the resulting model include one noise
channel *e* at the input for each output in your
system.

Thus, linear, parametric models represent input-output relationships for two kinds of input channels: measured inputs and (unmeasured) noise inputs. For example, consider the ARX model given by one of the following equations:

$$A(q)y(t)=B(q)u\left(t-nk\right)+e(t)$$

or

$$y(t)=\frac{B(q)}{A(q)}u\left(t\right)+\frac{1}{A(q)}e(t)$$

In this case, the dynamic model is the relationship between the measured input
*u* and output *y*, $$G={\scriptscriptstyle \raisebox{1ex}{$B(q)$}\!\left/ \!\raisebox{-1ex}{$A(q)$}\right.}$$. The noise model is the contribution of the input noise
*e* to the output *y*, given by$$H={\scriptscriptstyle \raisebox{1ex}{$1$}\!\left/ \!\raisebox{-1ex}{$A(q)$}\right.}$$.

Suppose that the model `m`

contains both a dynamic model
*G* and a noise model *H*. To create
a new model that only has *G* and no noise contribution, simply
set its `NoiseVariance`

property value to zero value.

To create a new model by subreferencing *H* due to
unmeasured inputs, use the following syntax:

m_H = m(:,[])

This operation creates a time-series model from `m`

by
ignoring the measured input.

The covariance matrix of *e* is given by the model property
`NoiseVariance`

, which is the matrix $$\Lambda $$:

$$\Lambda =L{L}^{T}$$

The covariance matrix of *e* is related to
*v*, as follows:

$$e=Lv$$

where *v* is white noise with an identity
covariance matrix representing independent noise sources with unit
variances.