Why does getPassiveIndex incorrectly compute the output passivity index, rho?

2 views (last 30 days)
Why does "getPassiveIndex" in Control System Toolbox MATLAB R2020a calculate a wrong value of the output passivity index?
Given the following syntax, rho should be 0.2
>> H = tf([1 0],[1 0.2 1]);
>> [rho,freq] = getPassiveIndex(H,'output')
rho =
-Inf
freq =
NaN
Why is rho calculated as "-Inf"?

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 15 Sep 2022
This is a limitation of the approach used to compute the output passivity index. We use a frequency-domain test which is only valid when "H" has no zero on the imaginary axis or at infinity, see Theorem 11 in
https://www.researchgate.net/publication/347232443_Sector_bounds_in_stability_analysis_and_control_design
Both conditions are not satisfied here, which is why "getPassiveIndex" returns rho = -Inf. You can recover the expected result by adding a small feedthrough to work around these technical issues:
>> [rho,freq] = getPassiveIndex(H+1e-4,'output')
rho =
  2.0000e-01
freq =
   1
In general, systems where passivity fails to hold strictly tend to be numerically problematic.

More Answers (0)

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!