## SLICOT System Identification Toolbox: Performance Results

Extensive performance evaluation of the implemented system identification software has been performed using data sets from the DAISY collection. Accuracy and efficiency comparisons of the SLICOT linear systems identification software and the available subspace-based techniques for 9 applications are presented in the report *V. Sima. "SLICOT Linear Systems Identification Toolbox", SLICOT Working Note 2000-4, July 2000.* More detailed results for 25 applications are presented in the paper [1]. Click here to see such a timing comparison [2] of the SLICOT slmoen4 with fast QR versus MATLAB 6.5.1 n4sid with QR factorization and default options, but with order = *n*, 'N4Weight' = 'MOESP', and: (a) 'Cov' := 'CovarianceMatrix' = [ ], 'N4H' := 'N4Horizon' = 'Auto'; (b) 'Cov' = 'None', 'N4H' = 'Auto'; (c) 'Cov' = [ ], 'N4H' = [*s s s*]; (d) 'Cov' = 'None', 'N4H' = [*s s s*]. Here* n* is the chosen order of the system, and *s* is the number of block rows. Clearly, the use of fast algorithms is very advantageous.

Extensive testing of the implemented Wiener systems identification software has also been performed and some results are described in the report *R. Schneider, A. Riedel, V. Verdult, M. Verhaegen, V. Sima.* "SLICOT System Identification Toolbox for Nonlinear Wiener Systems", SLICOT Working Note 2002-6, June 2002. Click here to see the timing results [3] for 22 applications (also considered above), using wident and widentc (with options for Cholesky factorization or conjugate gradients). The representation of the vertical axis (for time) is in a logarithmic scale.

### References

- V. Sima, D.M. Sima, S. Van Huffel, "High-performance numerical algorithms and software for subspace-based linear multivariable system identification", Journal of Computational and Applied Mathematics, Vol. 170, No. 2 (September 2004), pp. 371 - 397, 2004. ISSN:0377-0427.
- V.Sima, "Computational experience with subspace identification tools", 12th Mediterranean Conference on Control and Automation MED'04, June 6-9 2004, Kusadasi, Aydin/Turkey, MED'04 Proceedings (CD-ROM).
- V.Sima, "Performance investigation of SLICOT Wiener systems identification toolbox", Proceedings of the 13-th IFAC Symposium on Systems Identification, SYSID 2003, August 27-29, 2003, Rotterdam, The Netherlands, Omnipress, pp. 1345-1350 (CD-ROM).

This email address is being protected from spambots. You need JavaScript enabled to view it. February 2, 2005

## SLICOT System Identification Toolbox: Available Reports

- W. Favoreel, V. Sima, S. Van Huffel, M. Verhaegen, B. De Moor "Subspace Model Identification of Linear Systems in SLICOT", SLICOT Working Note 1998-6, Sept. 1998.
- B. Haverkamp "Efficient Implementation of Subspace Method Identification", Niconet Report 1999-3, Jan. 1999.
- A. van den Boom, T. Backx, Y. Zhu "Benchmarks for Identification", NICONET Report 1999-19, July 2000.
- V. Sima "SLICOT Linear Systems Identification Toolbox", SLICOT Working Note 2000-4, July 2000.
- R. Schneider, A. Riedel, V. Verdult, M. Verhaegen, V. Sima "SLICOT System Identification Toolbox for Nonlinear Wiener Systems", SLICOT Working Note 2002-6, June 2002.

This email address is being protected from spambots. You need JavaScript enabled to view it. February 2, 2005

## SLICOT System Identification Toolbox: Fortran Subroutines

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

## SLICOT System Identification Toolbox: MATLAB MEX- and M-functions

For maximum convenience, easy-to-use interface M-functions are included in the identification toolbox, explicitly addressing some of supported features. Whenever possible, these M-functions allow to work with system objects defined in the MATLAB Control Toolbox.

The following table contains the list of implemented M-functions for linear and Wiener systems:

findR |
Input-output data preprocessing, using Cholesky or (fast) QR factorization and MOESP or N4SID identification techniques, and estimating the system order |

findABCD |
System matrices and Kalman gain estimation, using MOESP, N4SID, or their combination |

findAC |
Estimating the matrices A and C, using MOESP or N4SID |

findBDK |
Estimating the matrices B, D, and Kalman gain K (given A and C), using MOESP or N4SID |

findx0BD |
Estimating the initial state and/or the matrices B and D, given the matrices A, C, and a set of input-output data |

inistate |
Estimating the initial state, given the system matrices, and a set of input-output data |

slmoesp |
System matrices and the Kalman gain estimation, using MOESP technique |

sln4sid |
System matrices and the Kalman gain estimation, using N4SID technique |

slmoen4 |
System matrices and the Kalman gain estimation, using combined MOESP and N4SID techniques: A and C found via MOESP, and B and D, via N4SID |

slmoesm |
System matrices, the Kalman gain, and initial state estimation, using combined MOESP and system simulation techniques |

dsim |
Output response of a linear discrete-time system (much faster than the MATLAB function lsim) |

o2s |
Conversion of a linear discrete-time system given in the output normal form to a state-space representation |

s2o |
Conversion of a state-space representation of a linear discrete-time system into the output normal form |

NNout |
Output response of a set of neural networks used to model the nonlinear part of a Wiener system |

The first five M-functions allow to flexibly identify various system and covariance matrices for linear systems. The M-functions slmoesp, sln4sid, slmoen4, and slmoesm are method-oriented, and they also enable to efficiently estimate models of various orders.

The MEX-functions are more difficult to use than the provided M-functions, but allow a greater flexibility. They are called by the M-functions. The following table contains the list of MEX-files for linear and Wiener systems:

order |
Input-output data preprocessing, possibly sequentially, and finding an estimate of the system order |

sident |
System matrices, Kalman predictor gain, and covariance matrices estimation, using MOESP, N4SID, or their combination |

findBD |
Estimating the initial state and/or the matrices B and D, using A, C, and the input and output trajectories |

ldsim |
Output response of a linear discrete-time system (much faster than the MATLAB function lsim) |

onf2ss |
Conversion of a linear discrete-time system given in the output normal form to a state-space representation |

ss2onf |
Conversion of a state-space representation of a linear discrete-time system into the output normal form |

widentc |
Estimating a discrete-time model of a Wiener system using a neural network approach and a Levenberg-Marquardt algorithm (with a Cholesky-based, or a conjugate gradients solver) |

wident |
Estimating a discrete-time model of a Wiener system using a neural network approach and a MINPACK-like Levenberg-Marquardt algorithm |

Wiener |
Output response of a Wiener system |

The MEX-files above provide interfaces to the main user-callable or computational routines for linear and Wiener systems identification, and cover all functionality available in the corresponding SLICOT identification routines.

Executable SLICOT MEX-files are provided for recent MATLAB releases running under WINDOWS and Linux. Demonstration packages can also be provided.

For purchasing licenses of SLICOT-based MATLAB Toolboxes, please visit the SynMath homepage of our partner company SynOptio.

This email address is being protected from spambots. You need JavaScript enabled to view it. February 2, 2005; October 18, 2009

## SLICOT Model and Controller Reduction Toolbox: Fortran Subroutines

The Fortran routines for *model and controller reduction* can deal with both stable and unstable continuous- and discrete-time linear multivariable systems using additive or relative error model reduction methods. The main features and options are:

- several model reduction approaches based on additive or relative error model reduction methods:
*Balance & Truncate*(B&T)*Singular perturbation approximation*(SPA)*Hankel norm approximation*(HNA)*Balanced stochastic truncation*(BST), in conjunction with B&T and SPA*Frequency-weighted reduction*in conjunction with B&T, SPA, and HNA- several controller reduction approaches:
*Frequency-weighted reduction*with special stability/performance enforcing weights*Coprime factorization based reduction*of state feedback and observer based controllers, in conjunction with B&T and SPA- enhanced accuracy algorithms using
*square-root*and*balancing-free*approaches to model reduction - reduction of unstable systems by combining the methods for stable systems with stable coprime factorization or additive spectral decomposition techniques
- availability of both, fully documented drivers and computational routines
- the use of structure exploiting algorithms and dedicated linear algebra tools

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

AB09AD | Balance & Truncate model reduction |

AB09AX | *Balance & Truncate model reduction with state matrix in real Schur form |

AB09BD | Singular perturbation approximation based model reduction |

AB09BX | *Singular perturbation approximation based model reduction with state matrix in real Schur form |

AB09CD | Hankel norm approximation based model reduction |

AB09CX | *Hankel norm approximation based model reduction with state matrix in real Schur form |

AB09DD | Singular perturbation approximation formulas |

AB09ED | Hankel norm approximation based model reduction for the stable part |

AB09FD | Balance & Truncate model reduction of coprime factors |

AB09GD | Singular perturbation approximation of coprime factors |

AB09MD | Balance & Truncate model reduction for the stable part |

AB09ND | Singular perturbation approximation based model reduction for the stable part |

AB09HD | Stochastic Balance & Truncate and Singular perturbation approximation model reduction |

AB09HX | *Stochastic Balance & Truncate and Singular perturbation approximation model reduction with state matrix in real Schur form |

AB09HY | *Cholesky factors of the controllability and observability Grammians |

AB09ID | Frequency-weighted Balance & Truncate and Singular perturbation approximation model reduction |

AB09IX | *Accuracy enhanced balancing related model reduction with state matrix in real Schur form |

AB09IY | *Cholesky factors of the frequency-weighted controllability and observability Grammians |

AB09JD | Frequency-weighted Hankel-norm approximation method with invertible proper weights |

AB09JV | *State-space representation of a projection of a left weighted transfer-function matrix |

AB09JW | *State-space representation of a projection of a right weighted transfer-function matrix |

AB09JX | *Check stability/antistability of finite eigenvalues |

AB09KD | Frequency-weighted Hankel-norm approximation with biproper invertible weights |

AB09KX | *Stable projection of V*G*W or conj(V)*G*conj(W) |

SB16AD | Controller reduction using frequency-weighted Balance & Truncate and Singular perturbation approximation methods with special stability/performance preserving frequency weights |

SB16AY | *Cholesky factors of the frequency-weighted controllability and observability Grammians for controller reduction |

SB16BD | State-feedback/full-order estimator based controller reduction using coprime factorization with Balance & Truncate and Singular perturbation approximation methods |

SB16CD | State-feedback/full-order estimator based controller reduction using frequency-weighted coprime factorization with Balance & Truncate method |

SB16CY | *Cholesky factors of controllability and observability Grammians of coprime factors of a state-feedback controller |

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 table 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. March 12, 2002, Updated This email address is being protected from spambots. You need JavaScript enabled to view it. March 10, 2005; Updated: June 15, 2006