Find non singular transformation matrix

3 views (last 30 days)
RJS
RJS on 17 Nov 2021
Commented: Paul on 22 Dec 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 Comments
Paul
Paul on 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?

Sign in to comment.

Accepted Answer

Paul
Paul on 17 Nov 2021
Edited: Paul on 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 Comments
RJS
RJS on 22 Dec 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 on 22 Dec 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

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!