The Fortran routines for linear systems identification are aimed to estimate state space models and covariance matrices of linear discrete-time multivariable systems, using the available input-output data sequences. The main features and options are:

  • two algorithmic subspace-based approaches:
    • MOESP - Multivariable Output-Error state SPace identification
    • N4SID - Numerical algorithms for Subspace State Space System IDentification
    • and their combination
  • standard or fast techniques for data compression (including abilities to exploit the block-Hankel structure)
  • multiple (possibly connected) data batches processing
  • availability of both, fully documented drivers and computational routines
  • the use of structure exploiting algorithms and dedicated linear algebra tools
  • optionally, the quality of the intermediate results can be assessed by inspecting the associated condition numbers.

A list of the implemented Fortran routines with links to the associated .html documentation is given in the following table, where * denotes auxiliary routines:

IB01AD Input-output data preprocessing and finding the system order
IB01BD Estimating the system matrices, covariances, and Kalman gain
IB01CD Estimating the initial state and the system matrices B and D
IB01MD * Upper triangular factor in the QR factorization of the concatenated input and output block-Hankel matrices
IB01ND * Singular value decomposition giving the system order
IB01OD * Estimating the system order
IB01OY * User's confirmation of the system order
IB01PD * Estimating the system matrices and covariances
IB01PX * Estimating the matrices B and D of a system using Kronecker products
IB01PY * Estimating the matrices B and D of a system exploiting the special structure
IB01QD * Estimating the initial state and the matrices B and D of a system, using A, C, and the input-output data sequences
IB01RD * Estimating the initial state of a system, using (A, B, C, D), and the input-output data sequences

The Fortran routines for Wiener systems are aimed to estimate the parameters of discrete-time multivariable Wiener systems, using the available input-output data sequences. The main features and options are:

  • an efficient three step procedure:
    • find an approximate linear model, using a combination of MOESP and N4SID
    • approximate the nonlinear part, modelled as a single layer neural network, using the simulated output of the estimated linear system and the available input-output data
    • optimize the parameters of the whole system by a Levenberg-Marquardt algorithm, using the initialization provided by the previous two steps
  • the use of the output normal form of the linear model
  • a Levenberg-Marquardt algorithm using block QR factorization with column pivoting, which is a specialized, structure-exploiting, LAPACK-based implementation of the approach used in the MINPACK package (Argonne National Laboratory, U.S.A.)
  • by suitable reordering of the parameters, the Jacobian matrices of the whole system are in a block diagonal form, with an additional right block column
  • option for rank determinations by incremental condition estimation.

A list of the implemented Fortran routines with links to the associated .html documentation is given in the following table:

IB03AD Estimating a set of parameters for approximating a Wiener system in a least-squares sense, using a neural network approach and a Levenberg-Marquardt algorithm (Cholesky-based or conjugate gradients solver)
IB03BD Estimating a set of parameters for approximating a Wiener system in a least-squares sense, using a neural network approach and a MINPACK-like Levenberg-Marquardt algorithm
MD03AD Minimizing the sum of the squares of m nonlinear error functions in n variables, x, by a Levenberg-Marquardt algorithm (Cholesky-based or conjugate gradients solver)
MD03BD Minimizing the sum of the squares of m nonlinear error functions in n variables, x, by a MINPACK-like Levenberg-Marquardt algorithm
MB02YD * Solution of a system of linear equations A*x = b, D*x = 0, in the least squares sense, with D a diagonal matrix, given a QR factorization with column pivoting of A
MB04OW * Rank-one update of a Cholesky factorization for a 2-by-2 block matrix
MD03BX * QR factorization with column pivoting and error vector transformation for standard nonlinear least squares problems
MD03BY * Finding the Levenberg-Marquardt parameter for standard nonlinear least squares problems
NF01AD * Computing the output of a Wiener system
NF01AY * Computing the output of a set of neural networks
NF01BD * Computing the Jacobian of a Wiener system
NF01BP * Finding the Levenberg-Marquardt parameter
NF01BQ * Solution of a system of linear equations J*x = b, D*x = 0, in the least squares sense, with D a diagonal matrix, given a block QR factorization with column pivoting of J
NF01BR * Solution of the linear system op(R)*x = b, with op(R) = R or transpose(R), and R block upper triangular stored in a compressed form
NF01BS * Block QR factorization of a structured Jacobian matrix
NF01BU * Computing J'*J + c*I, for the Jacobian J given in a compressed form
NF01BV * Computing J'*J + c*I, for a full Jacobian J (one output variable)
NF01BW * Matrix-vector product x <-- (J'*J + c*I)*x, for J in a compressed form
NF01BX * Matrix-vector product x <-- (A'*A + c*I)*x, for a full matrix A
NF01BY * Computing the Jacobian of the error function for a neural network (for one output variable)
TB01VD * Conversion of a discrete-time system to output normal form
TB01VY * Conversion of the output normal form of a discrete-time system to a state-space representation
TF01MX * Output response of a linear discrete-time system, given a general system matrix (each output is a column of the result)
TF01MY * Output response of a linear discrete-time system, given the system matrices (each output is a column of the result)

The documentation of all routines is also accessible from the SLICOT Library main index (in case of the drivers, or user-callable routines), or from the SLICOT Supporting Routines index (in case of the auxiliary routines, marked with * in the two tables above). The SLICOT Supporting Routines index is also accessible from the main Library index.


This email address is being protected from spambots. You need JavaScript enabled to view it. February 2, 2005; Updated: June 15, 2006