getPassiveIndex
Compute passivity index of linear system
Syntax
Description
getPassiveIndex computes various measures of the excess
               or shortage of passivity for a given system. 
A linear system G(s) is passive if all its I/O trajectories (u(t),y(t)) satisfy:
for all T > 0. Equivalently, a system is passive if its frequency response is positive real, such that for all ω > 0,
(or the discrete-time equivalent).
R = getPassiveIndex(G)G is passive
                         when R is less than one. R
                         measures the relative excess (R < 1) or shortage
                              (R > 1) of passivity.
For more information about the notion of passivity indices, see About Passivity and Passivity Indices.
nu = getPassiveIndex(G,'input')nu > 0.
                              nu is also called the input feedforward passivity
                         (IFP) index. The value of nu is the minimum
                         feedforward action such that the resulting system is passive.
For more information about the notion of passivity indices, see About Passivity and Passivity Indices.
rho = getPassiveIndex(G,'output')rho > 0.
                              rho is also called the output feedback passivity
                         (OFP) index. The value of rho is the minimum feedback
                         action such that the resulting system is passive.
For more information about the notion of passivity indices, see About Passivity and Passivity Indices.
tau = getPassiveIndex(G,'io')tau >
                         0.
For more information about the notion of passivity indices, see About Passivity and Passivity Indices.
[index,
                         also returns the frequency at which the returned index value is
                         achieved.FI] = getPassiveIndex(___)
Examples
Input Arguments
Output Arguments
Limitations
- getPassiveIndex(G,'output')might return incorrect results when one of the following conditions occurs:- G^-1is improper, that is, has infinite gain at- s = Infor- z = Inf.
- G^-1has poles on the imaginary axis (for continuous-time- G) or on the unit circle (for discrete-time- G).
 - To circumvent this limitation, perturb - Gto have as many zeros as poles and only stable zeros. In the following example,- getPassiveIndexinitially returns an incorrect answer for- G.- G = tf([1 0],[1 0.2 1]); [rho,freq] = getPassiveIndex(G,'output')- Perturb - Gsuch that it is bi-proper and has stable zeros.- getPassiveIndexthen returns the expected answer.- zpk(G+1e-4) [rho,freq] = getPassiveIndex(G+1e-4,'output');
References
[1] Xia, M., P. Gahinet, N. Abroug, C. Buhr, and E. Laroche. “Sector Bounds in Stability Analysis and Control Design.” International Journal of Robust and Nonlinear Control 30, no. 18 (December 2020): 7857–82. https://doi.org/10.1002/rnc.5236.
Version History
Introduced in R2016a


