Azzera filtri
Azzera filtri

Creating Symbolic state space model and transforming to canonical form?

3 visualizzazioni (ultimi 30 giorni)
Hi all,
Is it possible to create a state space model based on symbolic parameters?... and then convert this model into controllable cannonical form?
Thanks,
Johnathon Street

Risposta accettata

Paul
Paul il 17 Apr 2021
Modificato: Paul il 17 Apr 2021
Yes, at least in principle. For example:
>> A=sym('a',3)
A =
[ a1_1, a1_2, a1_3]
[ a2_1, a2_2, a2_3]
[ a3_1, a3_2, a3_3]
>> B=sym('b',[3 1])
B =
b1
b2
b3
>> C=[B A*B A^2*B]; % controllability matrix
>> t3 = [0 0 1]/C;
>> Tinv=[t3;t3*A;t3*A^2]; % state transformation
>> Ac = simplify(Tinv*A/Tinv,100)
Ac =
[ 0, 1, 0]
[ 0, 0, 1]
[ a1_1*a2_2*a3_3 - a1_1*a2_3*a3_2 - a1_2*a2_1*a3_3 + a1_2*a2_3*a3_1 + a1_3*a2_1*a3_2 - a1_3*a2_2*a3_1, a1_2*a2_1 - a1_1*a2_2 - a1_1*a3_3 + a1_3*a3_1 - a2_2*a3_3 + a2_3*a3_2, a1_1 + a2_2 + a3_3]
>> Bc = simplify(Tinv*B)
Bc =
0
0
1
  6 Commenti
Walter Roberson
Walter Roberson il 17 Apr 2021
A=sym('a',3)
A = 
B=sym('b',[3 1])
B = 
C=[B A*B A^2*B]; % controllability matrix
t3 = [0 0 1]/C;
Tinv=[t3;t3*A;t3*A^2]; % state transformation
Ac = simplify(Tinv*A/Tinv,100)
Ac = 
Bc = simplify(Tinv*B)
Bc = 
Works for me. I just copied Paul's code exactly.
Johnathon Street
Johnathon Street il 17 Apr 2021
Yeah I just now got it to work. I dont know what i was doing...
It works just fine.
Thanks again

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su MATLAB in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by