Extract Common and Uncommon Matrix with Row Repetition

2 vues (au cours des 30 derniers jours)
Mukund
Mukund le 24 Mar 2018
Commenté : Stephen23 le 24 Mar 2018
I want to segregate common and uncommon matrix with row Repetition. Current matlab commands ismember and setdiff do it by removing repeated rows.
A=[2 3 4;4 1 2;3 5 7;2 8 1;2 3 4;5 5 5;4 1 2;4 1 2; 5 5 5]
B=[2 3 4;4 1 2;2 8 1]
c=ismember(B,A,'rows')
C=A(c,:)
D=setdiff(A,B,'rows')
C=[2 3 4;4 1 2;3 5 7] % Not the expected ans
D=[3 5 7; 5 5 5] %Not the expected ans (because no rows repetition).
I want the output with rows repetition. Expected output is
C=[2 3 4;4 1 2;2 8 1;2 3 4;4 1 2;4 1 2] % Common Matrix
D=[3 5 7;2 8 1;5 5 5; 5 5 5]% Uncommon matrix.
How it could be done?

Réponse acceptée

Birdman
Birdman le 24 Mar 2018
c=ismember(A,B,'rows')
C=A(c,:)
D=A(~c,:)
Note that
2 8 1
row is both located at A and B matrices, therefore your D matrix should look like
D=[3 5 7;5 5 5; 5 5 5]
  1 commentaire
Stephen23
Stephen23 le 24 Mar 2018
@mukind: What would you hope to change? ismember already returns an index that does exactly what you want. And by the very definition of sets setdiff does not return duplicates.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by