System Identification Toolbox | ![]() ![]() |
Selecting Model Structures for Multivariable Systems
A multivariable (MIMO) system is a system with several input and output channels. All model structures in the toolbox support models with one output and several inputs. Polynomial models, idpoly
, do not handle multi-output models, however.
Model Structures
Multivariable system offer a potentially richer internal structure. The easiest approach, in the black-box situation, is to think just in terms of input delays and state-space model order. A recommended approach is to get an idea of input delays from the nonparametric impulse response estimate, and determine the vector nk = [nk1,nk2,...,nkm]
where nkj
is the minimal delay from input j
to any of the output channels, and then try state-space models with several orders and with these delays.
The compare plot will reveal which output channels are easy and which are difficult to reproduce.
An alternative to find the delays is to first estimate a parametric model with delays 1
, and then examine the impulse responses of this model and determine the delays.
Model = pem(Data) % This uses 'best' model order impulse(Model,'sd',3) Model = pem(Data,'nx',1:10,'nk',nk)
(To test models with delay 0 in a similar way, use Model = pem(Data,
'best
',
'nk',zeros(size(nk)))
. Significant responses at delay 0 must be examined with care, since they may be caused by feedback.)
Note that delays nk
larger than 1 will be incorporated in the model structure, and thus increase the state-space model order from the nominal one with sum(max(nk-1,zeros(size(nk))))
. An alternative is to use the property 'InputDelay'
. This leads to a model that has the same delays as for 'nk'
, but these are not explicitly shown in the model matrices, but stored as a property to be used when necessary. See idmodel
properties in the "Command Reference" chapter.
If you have detailed knowledge about which orders and delays that are reasonable in the different input/output channels, you can use multivariable ARX models, in the idarx
model format. This allows you to define the orders of the input and output lags, as well as the delays, independently for the different channels.
Black-box parameterizations of multi-variable systems require many parameters. Therefore, it may be important to incorporate any essential structure knowledge based on physical insight. This is typically done by continuous-time, taylor-made model parameterizations using structured idss
models, or idgrey
models. See Structured State-Space Models with Free Parameters: the idss Model and State-Space Models with Coupled Parameters: the idgrey Model.
Channel Selection
A particular aspect of multivariable models regards the selection of channels. Models for subselections of input-output channels may be quite useful and informative. Generally speaking the models become "better" when more input channels are used, and "worse" when more output channels are used. The latter observation is due to the fact that such models have "more to explain."
If you build models with several outputs and find, using compare
, a certain output channel to be difficult to reproduce, then try to build model of this channel alone. This will reveal if there are inherent difficulties with this output, or that it is just too difficult to handle it together with other outputs.
Analogously, if you see that, using, e.g., step or impulse, a certain input channel seems to have an insignificant influence on the outputs, then remove that channel, and examine if the corresponding model becomes any worse, e.g., in the compare
plots.
A main feature of the toolbox's data and model objects is that it gives full support for the bookkeeping required for these channel subselections. Channels are selected by direct subreferencing, and the InputName
and OutputName
properties form the basis for a correct combination of channels. The subreferencing follows
and typical command sequences may be
Date = Data(1:500) Datv = Data(501:1000) m = pem(Date) compare(Datv,m) m1 = pem(Date(:,3,4)) compare(Datv,m,m1) bode(m,m1) compare(Datv,m(:,4),m1)
![]() | Comparing Different Models | Dealing with Data | ![]() |