Return submatrix that has Full Rank

4 visualizaciones (últimos 30 días)
Shubham Nipanikar
Shubham Nipanikar el 23 de Abr. de 2020
Editada: David Goodmanson el 23 de Abr. de 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 comentario
KSSV
KSSV el 23 de Abr. de 2020
Keep taking five columns randomly and check the rank.

Iniciar sesión para comentar.

Respuestas (1)

David Goodmanson
David Goodmanson el 23 de Abr. de 2020
Editada: David Goodmanson el 23 de Abr. de 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)

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by