Why does the STABSEP function in the Control System Toolbox 6.2 (R14SP2) give incorrect results?

12 views (last 30 days)
I use the STABSEP function on a system "sys" to decompose it into its stable and unstable parts. If the system "sys" is stable, I expect that the unstable part received on the execution of the STABSEP will be 0. However, I observe that the STABSEP function gives a non-zero unstable part, which is incorrect.
pole(sys);
[syss, sysus] = stabsep(sys);

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 27 Jun 2009
This enhancement has been incorporated in Release 2006b (R2006b). For previous product releases, read below for any possible workarounds:
This enhancement has been incorporated in Release 2006a (R2006a). For previous product releases, read below for any possible workarounds:
This issue has been addressed by the new scaling algorithms in Control System Toolbox 7.0 (R2006a). If you are using a previous version, read the following:
There are some numerical difficulties in the Control System Toolbox 6.2 (R14SP2) in the way the STABSEP function handles systems with poles spread over a wide range.
As a workaround you can use
a = [1 1e4 1e2;0 1e2 1e5;10 1 0];
b = [1;1;1];
c = [0.1 10 1e2];
sys = ss(a,b,c,0) %create a system sys
[syss, sysus] = stabsep(ssbal(sys)); % performs full balancing of sys.a
instead of
[syss, sysus] = stabsep(sys);
where “sys” is the LTI model you want to decompose into its stable and unstable parts.

More Answers (0)

Products


Release

R14SP2

Community Treasure Hunt

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

Start Hunting!