convert a transfer function to controllable and observable canonical form

129 Ansichten (letzte 30 Tage)
Hi, I want to convert a transfer function to controllable and observable canonical form for the
num = [4];
den = [1 0.8 4];
Gp = tf (num , den)
Gp =
4
---------------
s^2 + 0.8 s + 4

Akzeptierte Antwort

Star Strider
Star Strider am 29 Mär. 2020
Bearbeitet: Arkadiy Turevskiy am 18 Jun. 2024
num = [4];
den = [1 0.8 4];
Gp = tf (num , den);
The canon function requesting the 'companion' canonical form directly produces the observable canonical form:
GpssObs = canon(Gp,'companion')
GpssObsA = GpssObs.A
GpssObsB = GpssObs.B
GpssObsC = GpssObs.C
GpssObsD = GpssObs.D
producing:
GpssObsA =
0 -4
1 -0.8
GpssObsB =
1
0
GpssObsC =
0 4
GpssObsD =
0
The controllable canonical form is then:
GpssConA = GpssObsA.'
GpssConB = GpssObsC.'
GpssConC = GpssObsB.'
GpssConD = GpssObsD
producing:
GpssConA =
0 1
-4 -0.8
GpssConB =
0
4
GpssConC =
1 0
GpssConD =
0
Se the documentation section on: Canonical State-Space Realizations for a full discussion.
Update by Arkadiy Turevskiy at MathWorks on 6/18/2024
The answer above is valid for the software release that was current at the time the answer was posted. As of R2024a the doc link is still correct, but a different function should be used to compute controllable and observable forms.
Please use the function compreal, and set the argument type to "c" or "o" for controllable and observable forms respectively.
  4 Kommentare
Bill Tubbs
Bill Tubbs am 5 Feb. 2021
The outputs in this answer (for observable and controllable forms) do not match my class notes or other documentation I found online, for example here and here. The differences are in the B and C matrices.
Sean Doherty
Sean Doherty am 4 Sep. 2021
Star Strider. This MATLAB example contradicts the documentation (https://uk.mathworks.com/help/control/ug/canonical-state-space-realizations.html)
documentaion says observable canonical form has:
in example: n = 2, b0 = 0, bn1 = 0; b2 = 4, a0 = 1, a1 = 0.8, a0 = 0.4 should give:
B0 = [4 0]'
C0 = [0 1]
MATLAB example gives:
B0 = [1 0]'
C0 = [0 4]
Documentation is correct, MATLAB's canon() is wrong?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

TALAL alghattami
TALAL alghattami am 31 Mär. 2020
for the given matric how can i designe observer and pole placment and then implement the designe in simulink
apreicate your support
deno=[1 0.8 4];
num=[4];
Gp=(num,deno)
A =[0 1 ; -4 - -0.8];
B =[0;4];
C =[1 0];
D =[0];
  3 Kommentare

Melden Sie sich an, um zu kommentieren.


Branislav Hatala
Branislav Hatala am 16 Dez. 2020
I would like to ask how can I convert SIMO system to controllable form. I did not find anything about SIMO or MIMO systems and this cannot be applied since C and B matrices will result in frong dimensions.

Kategorien

Mehr zu Control System Toolbox 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