Appendix B
MATCONTROL AND LISTING OF
MATCONTROL FILES
ABOUT MATCONTROL:
What is the MATCONTROL library?
The MATCONTROL library is a set of M-files implementing the majority of algorithms of the
book:
Numerical Algorithms for Linear Control Systems Design and Analysis, by B.N. Datta.
Who wrote the MATCONTROL library?
The MATCONTROL library was written by several graduate students of Professor Datta. The
most contributions were made by Joao Carvalho and Daniil Sarkissian.
How can I get the MATCONTROL library?
The MATCONTROL library is distributed with the book mentioned above.
What to do if a routine is suspected to give wrong answers?
Please let us know immediately. Send an email to
[email protected] and, if possible, include
a MATLAB diary file that calls the routine and produces the wrong answer.
How to install MATCONTROL:
The MATCONTROL library is distributed in a subdirector called Matcontrol.
This directory must be copied from the media that accompanies the book into anywhere in
your system.
After the Matcontrol directory has been copied, you just have to let MATLAB know where
MATCONTROL is located. In order to do that, you must include it in MATLABs path.
The easiest way to do so is by including the proper MATLAB commands in your MATLAB
startup file (startup.m). If you do not have this file already, please create it.
Using your preferred text editor, open (or create) startup.m and add the following line:
Unix/Linux systems:
matlabpath([matlabpath,path of Matcontrol]);
1
APPENDIX B. MATCONTROL AND LISTING OF MATCONTROL FILES
MS-Windows* systems:
path(path,path of Matcontrol);
Examples: Here, Mfiles is the working directory of MATLAB.
On Linux PC:
matlabpath([matlabpath,:/home/carvalho/Mfiles/Matcontrol]);
On Unix-Solaris Workstation:
matlabpath([matlabpath,:/export/home/grad/carvalho/Mfiles/Matcontrol]);
On MS-Windows PC:
path(path,C:\Mfiles\Matcontrol);
Once youve done that, you can use MATCONTROL in the next MATLAB session. Please
issue the command help Matcontrol to see if MATCONTROL was properly included in
MATLABs path. You should see a list of all MATCONTROL M-files.
*Disclaimer: MATLAB and Windows are trademarks of their respective owners.
CHAPTER-WISE LISTING OF MATCONTROL FILES
Here is the Chapter-wise listing of MATCONTROL files.
Reference:
Numerical Algorithms for Linear Control Systems Design
and Analysis, by B.N. Datta.
Chapter 5:
Linear State Space Models and Solutions of the State Equations
EXPMPADE
EXPMSCHR
EXMPHESS
FREQRESH
INTMEXP
Chapter 6:
Controllability, Observability and Distance to Uncontrollability
CNTRLHS
OBSERHS
CNTRLC
DISCNTRL
Chapter 7:
Stability, Inertia and Robust Stability
INERTIA
- Determining the inertia and stability of a matrix without
solving a matrix equation or computing eigenvalues
- Finding H2 -norm using the controllability Grammians
- Finding H2 -norm using the observability Grammian
- Determining the distance to the continuous-time stability
H2NRMCG
H2NRMOG
DISSTABC
The Pade approximation to the exponential of a matrix
Computing the exponential of a matrix using Schur decomposition
Computing the exponential of a matrix using Hessenberg decomposition
Computing the frequency response matrix using Hessenberg decomposition
Computing an integral involving a matrix exponentials
Finding the controller-Hessenberg form
Finding the observer-Hessenberg form
Finding the controller canonical form (Lower Companion)
Distance to controllability using the Wicks-DeCarlo algorithm
3
DISSTABD
ROBSTAB
- Determining the distance to the discrete-time stability
- Robust stability analysis using Lyapunov equations
Chapter 8:
SYLVHUTC
Numerical Solutions and Conditioning of Lyapunov and
Sylvester Equations
- Finding the condition number of the Sylvester equation problem
- Finding the Cholesky factor of the positive definite solution of the
continuous-time Lyapunov equation
- Finding the Cholesky factor of the positive definite solution of the
discrete-time Lyapunov equation
- Solving the discrete-time Lyapunov equation using complex-Schur
decomposition of A
- Solving the continuous-time Lyapunov equation via finite series method
- Solving the continuous-time Lyapunov equation via Hessenberg decomposition
- Solving the continuous-time Lyapunov equation via real-Schur decomposition
- Solving the discrete-time Lyapunov equation via real-Schur decompostion
- Estimating the sep function with triangular matrices
- Computing the sep function using Kronecker product
- Solving the Sylvester equation using Hessenberg and complex Schur
decompositions
- Solving the discrete-time Sylvester equation using Hessenberg and
complex-Schur decompositions
- Solving the Sylvester equation via Hessenberg decomposition
- Solving the Sylvester equation using Hessenberg and real Schur
decompositions
- Solving an upper triangular Sylvester equation
Chapter 9:
Realization and Subspace Identification
MINRESVD
Chapter 10:
- Finding minimal realization using singular value decomposition of
the Hankel matrix of Markov parameters (Algorihtm 9.3.1)
- Finding minimal realization using singular value decomposition of a
Hankel matrix of lower order (Algorihtm 9.3.2)
Feedback Stabilization, Eigenvalue Assignment, and Optimal Control
STABLYAPC
STABLYAPD
STABRADC
HINFNRM
Chapter 11:
Numerical Methods and Conditioning of the EVA Problems
POLERCS
POLEQRS
POLERQS
- Single-input pole placement using the recursive algorithm
- Single-input pole placement using the QR version of the recursive algorithm
- Single-input pole placement using RQ version of the recursive algorithm
CONDSYLVC
LYAPCHLC
LYAPCHLD
LYAPCSD
LYAPFNS
LYAPHESS
LYAPRSC
LYAPRSD
SEPEST
SEPKR
SYLVHCSC
SYLVHCSD
SYLVHESS
SYLVHRSC
MINREMSVD
Feedback stabilization of continuous-time system using Lyapunov equation
Feedback stabilization of discrete-time system using Lyupunov equation
Finding the complex stability radius using the bisection method
Computing H -norm using the bisection method
APPENDIX B. MATCONTROL AND LISTING OF MATCONTROL FILES
POLERCM
POLERCX
POLEQRM
POLESCH
POLEROB
- Multi-input pole placement using
- Multi-input pole placement using
complex arithmetic and complex
- Multi-input pole placement using
- Multi-input pole placement using
- Robust pole placement
the recursive algorithm
the modified recursive algorithm that avoids
feedback.
the explicit QR algorithm
the Schur decomposition
Chapter 12:
State Estimation: Observer and Kalman Filter
SYLVOBSC
SYLVOBSM
SYLVOBSMB
- Solving the constrained multi-output Sylvester-observer equation
- Solving the multi-output Sylvester-observer equation
- Block triangular algorithm for the multi-output Sylvester-observer equation
Chapter 13:
Numerical Solutions and Conditioning of the Algebraic Riccati Equations
RICEIGC
RICSCHC
RICSCHD
RICGEIGD
RICNWTNC
RICNWTND
RICSGNC
RICSGND
RICNWLSC
RICNWLSD
Chapter 14:
Internal Balancing and Model Reduction
BALSVD
BALSQT
MODREDS
HNAPRX
The eigenvector method for the continuous-time Riccati equation
The Schur method for the continuous-time Riccati equation
The Schur method for the discrete-time Riccati equation
The generalized eigenvector method for the discrete-time Riccati equation
Newtons method for the continuous-time Riccati equation
Newtons method for the discrete-time Riccati equatioin
The matrix sign-function method for the continuous-time Riccati equation
The matrix sign-function method for the discrete-time Riccati equation
Newtons method with line search for the continuous-time Riccati equation
Newtons method with line search for the discrete-time Riccati equation
Internal balancing using the singular value decomposition
Internal balancing using the square-root algorithm
Model reduction using the Schur method
Hankel norm approximation