How to remove rows having repeating elements from a matrix?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Susmita
el 25 de Abr. de 2016
Comentada: David Wagener
el 1 de Dic. de 2019
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.
0 comentarios
Respuesta aceptada
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)
Baltam
el 25 de Abr. de 2016
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
David Wagener
el 1 de Dic. de 2019
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.
Ver también
Categorías
Más información sobre Logical 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!