Computing output passivity index of a simple system using getPassiveIndex

1 次查看(过去 30 天)
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.

采纳的回答

Neelanshu
Neelanshu 2024-5-6
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.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Passivity and Sector Bounds 的更多信息

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by