Effacer les filtres
Effacer les filtres

How to remove rows having repeating elements from a matrix?

2 vues (au cours des 30 derniers jours)
Susmita
Susmita le 25 Avr 2016
Commenté : David Wagener le 1 Déc 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.

Réponse acceptée

Roger Stafford
Roger Stafford le 25 Avr 2016
Modifié(e) : Roger Stafford le 27 Avr 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
  1 commentaire
Susmita
Susmita le 27 Avr 2016
Thanks for d answer...It's running correctly..

Connectez-vous pour commenter.

Plus de réponses (1)

Baltam
Baltam le 25 Avr 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 commentaires
Susmita
Susmita le 27 Avr 2016
This code is also running correctly..thanks@Baltam
David Wagener
David Wagener le 1 Déc 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.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by