Computing output passivity index of a simple system using getPassiveIndex

1 vue (au cours des 30 derniers jours)
Siva
Siva le 27 Nov 2021
Commenté : Siva le 17 Mai 2024
I am trying to compute the output passivity index of the system,
by calling
H = tf([1 0],[1 0.2 1]);
[rho,freq] = getPassiveIndex(H,'output')
rho = -Inf
freq = NaN
The results in
rho = -Inf
freq = NaN
However, based on the definition of output passivity index here, I think the value of rho should be 0.2.
If we did
rho = 0.2;
Hc = feedback(H,0.2,+1)
Hc = s ------- s^2 + 1 Continuous-time transfer function.
isPassive(Hc)
ans = logical
1
we get a system that is just passive, and increasing rho any further would result in a closed loop system that is not passive.
Intuitively also, this makes sense. H is the transfer function from force to velocity of a (passive) spring-mass-dashpot system. 0.2 is the damping coefficient, and may be thought of as the surplus passivity that the system has.
I am wondering why getPassiveIndex doesn't return an output passivity index of 0.2, and if I am interpreting something incorrectly.

Réponse acceptée

nick
nick le 6 Mai 2024
Hi Siva,
This is a limitation of the approach used for computation of the "getPassiveIndex". The frequency-domain test used is only valid when "H" has no zero on the imaginary axis or at infinity.
Both conditions are not satisfied here resulting in rho = -Inf. You can add a small feedback to work around this issue and recover the appropriate rho as shown :
[rho,freq] = getPassiveIndex(H+1e-4,'output')
Unrecognized function or variable 'H'.
You may refer to the following MATLAB answer to know more about limitation of "getPassiveIndex" :
Hope this helps.

Plus de réponses (0)

Catégories

En savoir plus sur Passivity and Sector Bounds dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by