How to remove rows having repeating elements from a matrix?

If I have a matrix A=[ 1 2 1 4; 1 2 3 4; 3 2 1 4; 3 3 2 1] then I want a matrix as B=[ 1 2 3 4; 3 2 1 4] so that both the 1st and 4th row will be deleted as they have repeated elements. pls help me to find out the code.

 Respuesta aceptada

Roger Stafford
Roger Stafford el 25 de Abr. de 2016
Editada: Roger Stafford el 27 de Abr. de 2016
t = false(1,size(A,1));
for k = 1:size(A,1)
u = unique(A(k,:));
t(k) = size(u,2)==size(A,2);
end
B = A(t,:); % Rows with repeated elements deleted

Más respuestas (1)

The below method is not elegant but it works.
A=[ 1 2 1 4; 1 2 3 4; 3 2 1 4; 3 3 2 1];
index = zeros(1,size(A,1));
for i = 1:size(A,1)
if numel(unique(A(i,:))) == numel(A(i,:))
index(i)=1;
end
end
index = logical(index);
B = A(index,:);
Kind regards,
Baltam

2 comentarios

This code is also running correctly..thanks@Baltam
The second version shown here while not as elegant works better if you have a large matrix and are using parallel processing. I'm not an expert by any means but the second version did not overload my machine like the first one did.

Iniciar sesión para comentar.

Categorías

Más información sobre Operators and Elementary Operations en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 25 de Abr. de 2016

Comentada:

el 1 de Dic. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by