Estimate State-Space Models with Canonical Parameterization
What Is Canonical Parameterization?
Canonical parameterization represents a state-space system in a reduced parameter form where many elements of A, B and C matrices are fixed to zeros and ones. The free parameters appear in only a few of the rows and columns in state-space matrices A, B, C, D, and K. The free parameters are identifiable — they can be estimated to unique values. The remaining matrix elements are fixed to zeros and ones.
The software supports the following canonical forms:
Companion form: The characteristic polynomial appears in the rightmost column of the A matrix.
Modal decomposition form: The state matrix A is block diagonal, with each block corresponding to a cluster of nearby modes.
The modal form has a certain symmetry in its block diagonal elements. If you update the parameters of a model of this form (as a structured estimation using
ssest), the symmetry is not preserved, even though the updated model is still block-diagonal.
Observability canonical form: The free parameters appear only in select rows of the A matrix and in the B and K matrices.
For more information about the distribution of free parameters in the observability canonical form, see the Appendix 4A, pp 132-134, on identifiability of black-box multivariable model structures in System Identification: Theory for the User, Second Edition, by Lennart Ljung, Prentice Hall PTR, 1999 (equation 4A.16).
For more information on canonical forms, see Canonical State-Space Realizations.
Estimating Canonical State-Space Models
You can estimate state-space models with chosen parameterization at the command line.
For example, to specify an observability canonical form, use the
name-value pair input argument, as follows:
m = ssest(data,n,'Form','canonical')
'companion' to specify modal decomposition and companion canonical forms,
If you have time-domain data, the preceding command estimates a continuous-time model. If
you want a discrete-time model, specify the data sample time using the
name-value pair input argument:
md = ssest(data, n,'Form','canonical','Ts',data.Ts)
If you have continuous-time frequency-domain data, you can only estimate a continuous-time model.