How to remove some certain rows in Matlab?

4 visualizaciones (últimos 30 días)
Moe
Moe el 22 de Feb. de 2016
Respondida: Stephen23 el 22 de Feb. de 2016
Matrix A is as follows:
A = [45,1,1,1,2;74,1,2,3,1;75,1,1,3,1;73,1,1,1,1;53,1,1,3,2;98,1,1,1,1];
I want to find those rows in matrix A that only has array "1" and remove them from matrix A (produce new matrix C without those rows) and store them in the matrix B.
B = [45,1,1,1,2;74,1,2,3,1;75,1,1,3,1;53,1,1,3,2];
C = [73,1,1,1,1;98,1,1,1,1]
  2 comentarios
jgg
jgg el 22 de Feb. de 2016
Do you mean columns? Because no row in A has only ones?
Moe
Moe el 22 de Feb. de 2016
jgg, column 2 to column 5. Remove the row if there is only array "1" in for all specified columns in on a row.

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 22 de Feb. de 2016
Simple logical operations are all that is required:
>> idx = all(1==A(:,2:end),2);
>> B = A(~idx,:)
B =
45 1 1 1 2
74 1 2 3 1
75 1 1 3 1
53 1 1 3 2
>> C = A(idx,:)
C =
73 1 1 1 1
98 1 1 1 1

Más respuestas (1)

jgg
jgg el 22 de Feb. de 2016
Editada: jgg el 22 de Feb. de 2016
Ah, I think I understand: the first column are IDs or something. This should work, using the ismember function with the rows option:
data = A(:,2:end);
ind = ismember(data,ones(1,size(data,2)),'rows');
C = A(ind,:);
B = A(~ind,:);

Categorías

Más información sobre Matrices and Arrays 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