Return submatrix that has Full Rank

4 Ansichten (letzte 30 Tage)
Shubham Nipanikar
Shubham Nipanikar am 23 Apr. 2020
Bearbeitet: David Goodmanson am 23 Apr. 2020
So I have P = ctrb(A,C) which returns the controllability matrix. which is say 5x10 Now if it has full rank, I want MATLAB to just return the 5x5 matrix that fulfills the rank requirement. How can I do this? Because I need to use that P matrix in further calculations but I can't do it with the 5x10 matrix that MATLAB gives me, I need the 5x5
  1 Kommentar
KSSV
KSSV am 23 Apr. 2020
Keep taking five columns randomly and check the rank.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

David Goodmanson
David Goodmanson am 23 Apr. 2020
Bearbeitet: David Goodmanson am 23 Apr. 2020
Hello Shubham,
% make up an example
nrow = 5;
ncol = 10; % ncol > nrow
A = rand(nrow,ncol);
A = [A(:,1),A(:,2),A]; % toss in some duplicate columns to make sure they get rejected
At = A'; % work with transpose
[m n] = size(At); % m > n
[~, ~, p] = lu(At);
Atsub = p*At;
Asub = Atsub(1:n,:)'; % take top rows, transpose back
ind = p*(1:m)';
ind = ind(1:n)'; % index shows which columns were selected
format compact
Asub
A % visual check that all columns of Asub are contained in A
ind
rank(Asub)

Kategorien

Mehr zu Creating and Concatenating Matrices 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