Model Reduction Software
Name
emgr  EMpirical GRamian framework for (nonlinear) inputoutput systems.
Description
System gramians are matrices associated to linear inputoutput systems and quantify their controllability, observability and minimality.
Empirical system gramian matrices (empirical gramians) are computable for linear but also for parametric and nonlinear (statespace) systems and have, among others (see below), applications in model order reduction.
Model reduction via empirical gramians is applicable to the statespace, to the parameterspace or both through combined state and parameter reduction.
For state reduction, the empirical controllability gramian and the empirical observability gramian, or the empirical cross gramian (the empirical linear cross gramian for largescale linear systems) are available.
For sensitivity analysis, parameter identification, and parameter reduction, the empirical sensitivity gramian (controllability of parameters), or the empirical identifiability gramian and empirical crossidentifiability gramian (observability of parameters) are provided.
Combined reduction is enabled by the empirical joint gramian, which computes minimality of states (via the cross gramian) and observability of parameters (via the crossidentifiability gramian) simultaneously.
Overall, empirical system Gramians are an advanced datadriven systemtheoretic method and a numerical tool for GRAMIANbased (non)linear inputoutput system analysis.
The empirical gramian framework  emgr
 is a compact opensource toolbox,
compatible with OCTAVE and MATLAB,
that provides a common interface for the computation of empirical gramians as well as various variants.
Scope
 Model Order Reduction (MOR)  Model Reduction
 Parametric Model Order Reduction (pMOR)  Robust Reduction
 Nonlinear Model Order Reduction (nMOR)
 Parameter Reduction
 Combined State and Parameter Reduction (Combined Reduction)
 Decentralized Control
 Sensitivity Analysis
 Parameter Identification  Structural Identifiability  InputOutput Identifiability
 Nonlinearity Quantification
 Uncertainty Quantification
 System Norms  System Indices  System Invariants
 Optimal Sensor Placement  Optimal Actuator Placement
 Matrix Equations
Download
Get emgr
here: emgr.m (Version: 5.9, CRC32: c136507c)
[emgr5.9.zip]
[mirror]
[source]
[meta]
[repo]
^{(emgr is written in the Matlab programming language and requires Octave >= 5.2 or MATLAB >= 2017b, yet emgr has no dependencies on toolboxes or packages.)}
License
All source code is licensed under the open source BSD2Clause license:
Copyright (c) 20132021, Christian Himpe
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Disclaimer
This is research software!
Model
The target mathematical model is a general inputoutput system (aka control system):
ẋ(t) = f(x(t),u(t),p,t)
y(t) = g(x(t),u(t),p,t)
consisting of a firstorder ordinary differential equation (ODE) with vector field f
and an algebraic output function g
,
of which either (may) depend on input u(t)
, state x(t)
, parameter p
and time t
, yielding the output y(t)
.
This model maps an input (control) to an output (quantities of interest) via the state evolving under a dynamical system.
Algorithm
The computation of empirical system Gramians is described in the openaccess article:
C. Himpe; "emgr  the Empirical Gramian Framework"; Algorithms, 11(7): 91, 2018;
and references therein.
Usage
General Usage: W = emgr(f,g,s,t,w,pr,nf,ut,us,xs,um,xm,dp);
Minimal Usage: W = emgr(f,g,s,t,w);
About Info Usage: v = emgr('version');
Mandatory Arguments
f
 handle to a function with signaturex = f(x,u,p,t)
, the system's vector field,g
 handle to a function with signaturey = g(x,u,p,t)
, the system's output functional;g = 1
impliesy = x
,s
 three component vectors = [M,N,Q]
holding number of inputs, states and outputs,t
 two component vectort = [dt,Tf]
holding time step width and time horizon,w
 a character selecting the gramian type (For details see Gramians).
Optional Arguments
pr
 System's parameters (Default:0
;'s'
,'i'
,'j'
require two columns for min and max parameter),vector
 column vector holding the parameters,matrix
 set of column vectors holding different sets of parameters.
nf
 Thirteen component vector holding options; (Default:0
, for details see Option Flags).ut
 Input time series (Default:'i'
),handle
 handle to function with signatureu_t = ut(t)
,'i'
 delta impulse input,'s'
 step input / load vector / source term,'h'
 decaying exponential chirp input via havercosine,'a'
 cardinal sine / sinc input,'r'
 uniformly random binary input.
us
 Steadystate input (Default:0
),scalar
 sets allM
input components to provided value,vector
 steadystate input column vector of dimensionM
.
xs
 Steadystate, also nominal initial state (Default:0
),scalar
 sets allN
steadystate components to provided value,vector
 steadystate column vector of dimensionN
.
um
 Input perturbation scales (Default:1
),scalar
 set all maximum scales to argument,vector
 set maximum to scale to argument,matrix
 set scales to argument, used as is.
xm
 Initial state perturbation scales (Default:1
),scalar
 set all maximum scales to argument,vector
 set maximum to scale to argument,matrix
 set scales to argument, used as is.
dp
 Custom inner product handlexy = dp(x,y)
(Default:@mtimes
).
Gramian Types
'c'
 Empirical Controllability Gramian (W_{C}
),'o'
 Empirical Observability Gramian (W_{O}
),'x'
 Empirical Cross Gramian (W_{X}
sometimes noted asW_{CO}
),'y'
 Empirical Linear Cross Gramian (W_{Y}
),'s'
 Empirical Sensitivity Gramian (W_{S}
, controllability of parameters),'i'
 Empirical Identifiability Gramian (W_{I}
, observability of parameters, via augmented observability Gramian),'j'
 Empirical Joint Gramian (W_{J}
, observability of parameters via crossidentifiability Gramian).
Option Flags
nf(1)
 Center time series around (Default:0
),= 0
 zero (balanced POD),= 1
 steadystate (empirical covariances),= 2
 final state,= 3
 arithmetic average over time (empirical gramians),= 4
 rootmeansquare over time,= 5
 midrange over time.
nf(2)
 Input scale sequence (Default:0
),= 0
 singleum = um
;= 1
 linearum = um * [0.25, 0.50, 0.75, 1.0]
;= 2
 geometricum = um * [0.125, 0.25, 0.5, 1.0]
;= 3
 logarithmicum = um * [0.001, 0.01, 0.1, 1.0]
;= 4
 sparseum = um * [0.01, 0.5, 0.99, 1.0]
;
nf(3)
 State scale sequence (Default:0
),= 0
 singlexm = xm
;= 1
 linearxm = xm * [0.25, 0.50, 0.75, 1.0]
;= 2
 geometricxm = xm * [0.125, 0.25, 0.5, 1.0]
;= 3
 logarithmicxm = xm * [0.001, 0.01, 0.1, 1.0]
;= 4
 sparsexm = xm * [0.01, 0.5, 0.99, 1.0]
;
nf(4)
 Input transformations (Default:0
),= 0
 unitum = [um, um]
;= 1
 singleum = um
;
nf(5)
 State transformations (Default:0
),= 0
 unitxm = [xm, xm]
;= 1
 singlexm = xm
;
nf(6)
 Gramian normalization, onlyW_{C}, W_{O}, W_{X}, W_{Y}
(Default:0
),= 0
 no normalization,= 1
 normalize with Jacobi preconditioner,= 2
 normalize with steadystate (input).
nf(7)
 State gramian variant (Default:0
),= 0
 regular,= 1
 outputcontrollability gramian (W_{C}, W_{S}
),= 1
 averaged observability gramian (W_{O}, W_{I}
),= 1
 nonsymmetric cross gramian (cross operatorW_{Z}
) for nonsquare, nonsymmetric or nongradient systems (W_{X}, W_{Y}, W_{J}
).
nf(8)
 Enable nominal input during parameter and state perturbations, onlyW_{O}, W_{X}, W_{S}, W_{I}, W_{J}
(Default:0
),= 0
 no extra input,= 1
 extra input for state or parameter perturbations.
nf(9)
 Parameter centering and scale sequence, onlyW_{S}, W_{I}, W_{J}
(Default:0
),= 0
 no centering and linear scales,= 1
 linear centering and scales,= 2
 logarithmic centering and scales.
nf(10)
 Parameter gramian variant, onlyW_{S}, W_{I}, W_{J}
(Default:0
),= 0
 inputstate average (W_{S}
),= 1
 inputoutput average (W_{S}
),= 0
 coarse Schurcomplement (W_{I}, W_{J}
),= 1
 approximate Schurcomplement (W_{I}, W_{J}
).
nf(11)
 Cross gramian partition width, onlyW_{X}, W_{J}
(Default:0
),= 0
 full cross Gramian, no partitioning,< N
 maximum partition width.
nf(12)
 Partitioned cross gramian running index, onlyW_{X}, W_{J}
(Default:0
),= 0
 no partitioning,> 0
 index of cross gramian partition to be computed.
nf(13)
 Weight time series (Default:0
),= 0
 one (no weighting),= 1
 linear timeweighting,= 2
 quadratic timeweighting,= 3
 statebased weighting,= 4
 scalebased weighting.
Return Values
 Statespace empirical gramian matrix (for:
W_{C}, W_{O}, W_{X}, W_{Y}
).  Cell array of statespace and parameterspace empirical gramian matrix (for:
W_{S}, W_{I}, W_{J}
).
Solver Interface
A custom solver for quantities of interest of an ordinary differential equations is set by a function handle in the global variable:ODE
.
 Function signature:
y = solver(f,g,t,x0,u,p)
f
 handle to a function with signaturex = f(x,u,p,t)
, the system's vector field,g
 handle to a function with signaturey = g(x,u,p,t)
, the system's output functional,t
 two component vectort = [dt,Tf]
holding time step width and time horizon,x0
 column vector of dimensionN
holding initial state,u
 handle to function with signatureu_t = u(t)
,p
 column vector holding (current) parameter(s).
 Included default solver: SSPx2
 Explicit Second Order RungeKutta (RK2)
 Optimal Strong Stability Preserving (SSP)
 LowStorage implementation
 Configurable number of stages via global variable
STAGES
for enhanced stability (Default:STAGES = 3
) STAGES = 1
induces the Euler Method (first order explicit RungeKutta)STAGES = 2
induces the Heun's Method (second order explicit RungeKutta) From "Highly Efficient Strong StabilityPreserving Rungeâ€“Kutta Methods with LowStorage Implementations" by D.I. Ketcheson (2008)
Empirical System Theory
The platform est.m prototypically enables testing and evaluating methods based on empirical gramians.est
has the following capabilities:
 Model reduction (POD, DSPMR, Modified POD, bPOD, BT, DMDGalerkin)
 Parameter reduction
 Combined state and parameter reduction
 Decentralized control (RGA, Inputoutput coherence, DIOPM, H2, H∞, PM, HIIA)
 State sensitivity
 Parameter sensitivity
 Parameter identification
 Uncertainty quantification
 Nonlinearity quantification
 Gramian indices
 System indices
 Approximate system norms (H2, H∞, HSH, Ha)
 Matrix equations (Lyapunov, Sylvester)
 Tau function (Inverse spectral problem for Schrödinger's equation)
Minimal Example
A = 0.5*eye(4) % System matrix
B = [0;1;0;1] % Input matrix
C = [0,0,1,1] % Output matrix
WX = emgr(@(x,u,p,t) A*x + B*u, @(x,u,p,t) C*x,[1,4,1],[0.1,10.0],'x') % ≈ B*C
Tests
Tests are defined in emgrTest.m and are evaluated usingest
.
The tests are performed on a timeinvariant, linear, statespace symmetric MIMO system and optional linear parametrization:
ẋ = A*x + B*u + F*p
y = C*x
Demos
The demo codes can be found in estDemo.m and are evaluated usingest
.
Combined Reduction: Nonlinear System (
 
Benchmark: Inverse Sylvester Procedure (
 
Benchmark: Flexible Space Structures (
 
Benchmark: Nonlinear Model Reduction (
 
Quadratic Output: Kernel Matrix (
 
DMDGalerkin: AllPass System (
 
PDE Reduction: Advection Equation (
 
Nonlinear Second Order Reduction: 5body Choreography (
 
Sensitivity Analysis: Stable Orbits Inside Black Holes (

About
A gramian matrix W
is the result of all inner products of a set of vectors V = [v1 ... vn]
, in other words: W = V^{T} V
.
Properties of (linear) control systems can be assessed by the system gramians,
which are based on the controllability and observability operators.
Classically, the controllability gramian and observability gramian are utilized in balancing model reduction methods.
The cross gramian is not gramian matrix,
but encodes controllability and observability information, and thus minimality, into a single matrix.
Overall, system gramians quantifiy the systemtheoretic properties controllability (reachability), observability and (structural) identifiability.
Empirical gramians extend this approach to nonlinear control systems and thus enable nonlinear model reduction. For linear systems, these empirical system gramians are equal to the classic system gramians, yet, empirical gramians are also computable for parametric and nonlinear systems. Furthermore, empirical gramians contain more information about the underlying system; and particularly the empirical cross gramian conveys even additional information. This makes empirical system gramians a versatile tool for mathematical system theory, control theory or computational science and engineering (CSE).
The (discrete) empirical cross gramian encloses information on the inputoutput behavior of the associated control system as well as approximate Hankel Singular Values and can be computed very efficiently. For largescale linear systems, the linear empirical cross gramian, related to balanced POD, can be utilized. And for parametric systems, the (empirical) joint gramian, derived from the cross gramian, is available for combined reduction. In case of custom training input, instead of an empirical gramian matrix, an empirical covariance matrix can also be computed.
Model order reduction or short model reduction is an active research field in scientific computing and CSE, which investigates the algorithmic construction of loworder surrogate models for highdimensional differential equation models. The resulting reduced order models allow a substantially more economical evaluation in terms of computational or memory resources compared to the original largescale full order model. This numerical model reduction is essential, as developments in computing technology are constantly outpaced by the requirements for model simulation in dimensionality or complexity.
References
 C. Himpe; "Comparing (EmpiricalGramianBased) Model Order Reduction Algorithms"; arXiv, math.OC: 2002.12226, 2020.
 Synopsis: Comparing empiricalGramianbased model reduction methods via the MORscore.
 Links: selfarchived, source, runmycode
 P. Benner, C. Himpe; "CrossGramianBased Dominant Subspaces"; Advances in Computational Mathematics 45(5): 25332553, 2019.
 Synopsis: Extension of the DSPMR method to empirical dominant subspaces using the (empirical) cross gramian.
 Links: selfarchived, source, runmycode
 S. Grundel, C. Himpe, J. Saak; "On Empirical System Gramians"; in: Proceedings in Applied Mathematics and Mechanics, 19: e201900006, 2019.
 Synopsis: A brief summary of empirical Gramians and an their application to hyperbolic systems.
 Links: selfarchived, source, runmycode
 C. Himpe; "emgr  the Empirical Gramian Framework"; Algorithms, 11(7): 91, 2018.
 Synopsis: Mathematical and technical documentation of the empirical Gramian framework detailing all features and capabilities.
 Links: selfarchived, source, runmycode
 C. Himpe, T. Leibner, S. Rave, J. Saak; "Fast LowRank Empirical Cross Gramians"; in: Proceedings in Applied Mathematics and Mechanics, 17: 841842, 2017.
 C. Himpe, M. Ohlberger; "CrossGramianBased Model Reduction: A Comparison"; in: Model Reduction of Parametrized Systems: 271283, 2017.
 Synopsis: Summary and tests for Sylvesterequationbased cross gramian, empirical linear cross gramian and empirical cross gramian.
 Links: preprint, sourcecode, runmycode
 C. Himpe, M. Ohlberger; "A note on the cross gramian for nonsymmetric systems"; System Science and Control Engineering, 4(1): 199208, 2016.
 Synopsis: A new cross gramian matrix for nonsymmetric, nongradient and nonsquare system.
 Links: selfarchived, sourcecode, runmycode
 C. Himpe, M. Ohlberger; "Accelerating the Computation of Empirical Gramians and Related Methods"; at: 5th International Workshop on Model Reduction in Reacting Flows, 2015.
 Synopsis: Numerical performance enhancements for empirical gramians.
 Links: selfarchived, sourcecode
 C. Himpe, M. Ohlberger; "The Empirical Cross Gramian for Parametrized Nonlinear Systems"; in: IFACPapersOnLine (Vienna International Conference on Mathematical Modelling), 48(1): 727728, 2015.
 Synopsis: Use of the empirical cross gramian for parametric model order reduction by averaging.
 Links: sourcecode, runmycode
 C. Himpe, M. Ohlberger; "CrossGramianBased Combined State and Parameter Reduction for LargeScale Control Systems"; Mathematical Problems in Engineering, 2014: 843869, 2014.
 Synopsis: Introduction of the empirical cross gramian and the derived joint gramian as well as gramianbased combined reduction.
 Links: selfarchived, sourcecode, runmycode
 C. Himpe, M. Ohlberger; "Model Reduction for Complex Hyperbolic Networks"; in: Proceedings of the European Control Conference: 27392743, 2014.
 Synopsis: Cross gramian based model reduction of a timevarying nonsymmetric system with application in network cosmology.
 Links: preprint, sourcecode, runmycode
 C. Himpe, M. Ohlberger; "A Unified Software Framework for Empirical Gramians"; Journal of Mathematics, 2013: 365909, 2013.
 Synopsis: Mathematical background on and implementation of empirical gramians under a common interface.
 Links: selfarchived, sourcecode, runmycode
Contact
Send feedback to: ch@gramian.de
Cite
 Cite as: C. Himpe (2021). emgr  EMpirical GRamian Framework (Version 5.9) [Software].
https://gramian.de
doi:10.5281/zenodo.4454679  BibTeX:
@MISC{emgr, author={C.~Himpe}, title={{emgr  EMpirical GRamian Framework} (Version~5.9)}, howpublished={\url{https://gramian.de}}, year={2021}, doi={10.5281/zenodo.4454679}}
 DOI: 10.5281/zenodo.4454679 (Version 5.9)
 Except where otherwise noted, content on this site is licensed under a CC BY 4.0 license.
 Last Change: 20210121
Links
 emgrref.pdf (
emgr
reference card)  emgrmini.pdf (
emgr
summary slide)  emgrflyer.pdf (
emgr
flyer)  emgrrefs.md (
emgr
bibliography)  emgrposter2020.pdf (
emgr
poster ICERM)  emgrposter2019.pdf (
emgr
poster ModRed)  emgrposter2018.pdf (
emgr
poster MATLAB Expo)  emgrposter2015.pdf (
emgr
poster OctConf)  emgrposter2015a.pdf (
emgr
poster SIAM CSE)  orms.mfo.de/project?id=345 (
emgr
at Oberwolfach References on Mathematical Software)  swmath.org/software/7554 (
emgr
at swMATH)  dsweb.siam.org/Software/emgrempiricalgramianframework (
emgr
at DSweb)  researchgate.net/project/emgrEMpiricalGRamianFramework (
emgr
at researchgate)  mathworks.com/matlabcentral/fileexchange/40169emgrempiricalgramianframework (
emgr
at fileexchange)  archive.softwareheritage.org/swh:1:dir:01110fb738121831c685c8b0e3a2882a977f87f1 (
emgr
at softwareheritage)  hal.archivesouvertes.fr/hal02560320 (
emgr
at hal)  freshcode.club/projects/emgr (
emgr
at freshcode)  openhub.net/p/emgr (
emgr
at openhub)  10.1515/9783110499001013.pdf (
emgr
at MOR software chapter of MOR handbook)  modelreduction.org/index.php/Emgr (
emgr
at Model Order Reduction Wiki)  morepas.org/software/emgr (
emgr
at Model Reduction for Parametrized Systems)  git.io/mtips (Octave / Matlab Snippets)
Notes
 emgr has AUTHORS, README, CHANGELOG, CITATION, CODE, LICENSE, VERSION, RUNME.m files.
 emgr has a special version emgr.py for Python 3.X.
 emgr can compute the empirical cross gramian columnwise, and thus in parallel on distributed memory systems.
 emgr is not explicitly parallelized but multicore ready by extensive vectorization and implicit parallelization.
 emgr has highlighted loops that qualify for explicit parallelization using
parfor
.  emgr's custom dotproduct can also be used for GPGPU based matrix multiplication.
 emgr core function consists of a single file and has less than 600 lines of code!
 emgr's empirical gramian quality depends heavily on the specification of the operating region and the solver.
 emgr's default solver can be used externally by calling
emgr('version')
, which sets the global variableODE
to a handle.
Troubleshooting
 Issue: An empirical gramian contains very large or infinity values.
 Fix: Likely an unstable trajectory, ensure the perturbations (scales) or parameters do not destabilize the system and a suitable ODE solver is used.
 Issue: The linear cross gramian
W_{Y}
is zero. Fix: The second argument for the empirical inear cross gramian has to be the system's adjoint vector field, NOT the output functional.
 Issue: The identifiability gramian
W_{I}{2}
or crossidentifiability gramianW_{J}{2}
are zero. Fix: The parameter steady state (initial state) does not excite the system; usually this means setting
xs
≠ 0 ornf(8) = 1
.
 Fix: The parameter steady state (initial state) does not excite the system; usually this means setting
 Issue: Using
parfor
results in a loopvariable error. Fix: Since
parfor
cannot handle nonconsecutive loop indices, zero scales or zero min/max parameters are not admissible. Constant parameters may be used if they are last in the parameter vector.
 Fix: Since
 Issue: Using
nf(10) = 1
yields infinity values in a parameter gramian ('s'
,'i'
,'j'
). Fix: The min or max parameter sets likely contain zeros; try shifting parameters.
 Issue: Using
nf(1) = 1
with gramians'o'
,'x'
,'i'
,'j'
results in wrong results. Fix: In these configurations the steadystate output
ys = g(xs,us,p(:,k),0)
(for allk
) is computed, check ifg
works accordingly.
 Fix: In these configurations the steadystate output
 Issue: The joint gramian / crossidentifiability gramian
'j'
results in an error when using a Gaussian kernel as custom inner product. Fix: Due to the memoryefficient computation via nonsquare intermediate matrices this combination (as well as with any radial kernel) is incompatible.
Frequently Asked Questions

Q: What is model order reduction? What is model reduction?
 A: Model order reduction, or short model reduction, is the algorithmic computation of accurate lowdimensional surrogate models from highdimensional differentialequation models.

Q: What are system Gramians?
 A: System gramians are matrices characterizing the associated (linear) inputoutput system.

Q: What are empirical Gramians?
 A: Empirical system Gramians, or short empirical Gramians, are datadriven approximate system Gramians for parametric or nonlinear systems.

Q: How are empirical Gramians related to machine learning?
 A: In the language of machine learning, empirical Gramians provide physicsinformed unsupervised learning with synthetic data on recurrent neural networks.

Q: What is
emgr
? A: The empirical Gramian framework is a backend toolbox to compute empirical system Gramians.

Q: Why not just linearize a nonlinear inputoutput system?
 A: Linearization typically uses a single linearization point, while empirical Gramians practically average multiple linearization points in a custom operating region of the system.

Q: Which files do I need for my own project from the
emgr.zip
archive?
A: Only the
emgr.m
file is needed; all other files are sample code, tests or documentation.

A: Only the
See Also
 Model Reduction Routines (Another Empirical Gramian Software; empirical W_{C} and W_{O} only)
 gram (MATLAB Control System Toolbox; linear W_{C} and W_{O} only)
 gram (Octave Control Package; linear W_{C} and W_{O} only)
Category
tl;dr
emgr
computes empirical system Gramian matrices that quantify controllability, observability, minimality or identifiability of nonlinear inputoutput systems.