Filter löschen
Filter löschen

Computing output passivity index of a simple system using getPassiveIndex

7 Ansichten (letzte 30 Tage)
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.
ans = logical
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.

Akzeptierte Antwort

Neelanshu am 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.

Weitere Antworten (0)


Mehr zu Passivity and Sector Bounds finden Sie in Help Center und File Exchange




Community Treasure Hunt

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

Start Hunting!

Translated by