Find non singular transformation matrix

3 vues (au cours des 30 derniers jours)
RJS
RJS le 17 Nov 2021
Commenté : Paul le 22 Déc 2021
I am working on state space system in matlab script. here C =[0 0 0 0 0 0 1 0 1 0] but I want to observe 1st state i.e. required Cr = [1 0 0 0 0 0 0 0 0 0]. So to get this C I am using transformation matrix T = Cr/C.....but here i am getting singular T matrix
I want nonsingular T matrix
  2 commentaires
Paul
Paul le 17 Nov 2021
To make sure we're clear on the question:
You have a model
xdot = A*x + B*u
y = C*x + D*u
where C = [0 0 0 0 0 0 1 0 1 0]
The goal is find the similarity tranformation matrix T that defines a new state vector, z, so that
zdot = Anew*z + Bnew*u
y = Cnew*z + Dnew*u
where Cnew = [1 0 0 0 0 0 0 0 0 0]
Is my understanding correct?
RJS
RJS le 18 Nov 2021
yes

Connectez-vous pour commenter.

Réponse acceptée

Paul
Paul le 17 Nov 2021
Modifié(e) : Paul le 17 Nov 2021
Assuming the goal is as described in this comment, one solution would be:
T1 = [0 0 0 0 0 0 1 0 1 0];
T = [T1;null(T1).'];
See this Answer thread for much more discussion and other approaches.
  4 commentaires
RJS
RJS le 22 Déc 2021
If the required C vector is [0 0 0 0 1 0 0 0 0 0], then how to find this transformation
Paul
Paul le 22 Déc 2021
Follow the same approach, but put the C vector from plant in the fifth row of T instead of the first. Here's an example:
sys = rss(10); % random system for example
sys.c
ans = 1×10
-0.2270 -1.7085 0 -1.4590 0.2800 0.3869 1.1516 -0.3147 0 -0.6773
N = null(sys.c).';
T = [N(1:4,:); sys.c; N(5:end,:)]; % sys.c in the fifth row, distribute N across the others
sysnew = ss2ss(sys,T);
sysnew.c % verify desired result
ans = 1×10
0 0 0 0 1 0 0 0 0 0

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by