# 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:

$${\int}_{0}^{T}y{\left(t\right)}^{T}u\left(t\right)dt}>0,$$

for all *T* > 0. Equivalently, a system is passive if its frequency response is
positive real, such that for all *ω* > 0,

$$G\left(j\omega \right)+G{\left(j\omega \right)}^{H}>0$$

(or the discrete-time equivalent).

computes the relative passivity index. `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.

computes the input passivity index. The system is `nu`

= getPassiveIndex(`G`

,'input')*input strictly
passive* when `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.

computes the output passivity index. The system is `rho`

= getPassiveIndex(`G`

,'output')*output
strictly passive* when `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.

computes the combined I/O passivity index. The system is `tau`

= getPassiveIndex(`G`

,'io')*very
strictly passive* when `tau`

>
0.

`[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^-1`

is improper, that is, has infinite gain at`s = Inf`

or`z = Inf`

.`G^-1`

has poles on the imaginary axis (for continuous-time`G`

) or on the unit circle (for discrete-time`G`

).

To circumvent this limitation, perturb

`G`

to have as many zeros as poles and only stable zeros. In the following example,`getPassiveIndex`

initially returns an incorrect answer for`G`

.`G = tf([1 0],[1 0.2 1]); [rho,freq] = getPassiveIndex(G,'output')`

Perturb

`G`

such that it is bi-proper and has stable zeros.`getPassiveIndex`

then 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**