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.
Subreferencing nonlinear models is not supported.
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)
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.
To study
noise contributions in more detail, it might be useful to convert
the noise channels to measured channels using noisecnv
:
m_GH = noisecnv(m)
This operation creates a model m_GH
that
represents both measured inputs u
and noise inputs e,
treating both sources as measured signals. m_GH
is
a model from u
and e to y
,
describing the transfer functions G and H.
Converting noise channels to measured inputs loses
information about the variance of the innovations e
.
For example, step response due to the noise channels does not take
into consideration the magnitude of the noise contributions. To include
this variance information, normalize e such that v becomes
white noise with an identity covariance matrix, where
$$e=Lv$$
To normalize e, use the following command:
m_GH = noisecnv(m,'Norm')
This command creates a model where u and v are treated as measured signals, as follows:
$$y(t)=Gu(t)+HLv=\left[\begin{array}{cc}G& HL\end{array}\right]\left[\begin{array}{c}u\\ v\end{array}\right]$$
For example, the scaling by L causes the step responses from v to y to reflect the size of the disturbance influence.
The converted noise sources are named in a way
that relates the noise channel to the corresponding output. Unnormalized
noise sources e are assigned names such as 'e@y1'
, 'e@y2'
,
..., 'e@yn'
, where 'e@yn'
refers
to the noise input associated with the output yn
.
Similarly, normalized noise sources v
, are named 'v@y1'
, 'v@y2'
,
..., 'v@yn'
.
If you want to create
a model that has only the noise channels of an identified model as
its measured inputs, use the noise2meas
command.
It results in a model with y(t)
= He or y(t)
= HLv, where e or v is
treated as a measured input.
Note: When you plot models in the app that include noise sources, you can select to view the response of the noise model corresponding to specific outputs. For more information, see Selecting Measured and Noise Channels in Plots. |