Borrar filtros
Borrar filtros

Delete rows with same elements

8 visualizaciones (últimos 30 días)
klb
klb el 25 de Nov. de 2018
Comentada: Walter Roberson el 26 de Nov. de 2018
a=[2 3 2;3 3 3;4 4 4;2 5 4; 3 5 5; 4 4 4; 7 3 4]
how do I delete only those rows where elemets repeat for entire row length. In this example matrix, the three rows with all 3s and all 4s where this happens.

Respuesta aceptada

Star Strider
Star Strider el 25 de Nov. de 2018
Try this:
a=[2 3 2;3 3 3;4 4 4;2 5 4; 3 5 5; 4 4 4; 7 3 4];
a_new = a(all(diff(a,[],2) ~= 0, 2),:)
If all the columns in a particular row are the same, the vector returned by the diff function will all be uniformly 0. The all function across rows (dimension = 2) detects that, and deletes those rows.
a =
2 3 2
3 3 3
4 4 4
2 5 4
3 5 5
4 4 4
7 3 4
a_new =
2 3 2
2 5 4
7 3 4
  3 comentarios
klb
klb el 26 de Nov. de 2018
ok i repalced 'all' with 'any' and that gives the requried answer. But thank you! Now on to researching the finess between all and any...
Star Strider
Star Strider el 26 de Nov. de 2018
As always, my pleasure.

Iniciar sesión para comentar.

Más respuestas (1)

Walter Roberson
Walter Roberson el 25 de Nov. de 2018
mask = all(diff(a, [], 2) == 0)
Now you can use mask as the row selector in deletion.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by