Remove duplicates and original also

8 vues (au cours des 30 derniers jours)
Declan Bourke
Declan Bourke le 5 Août 2016
Commenté : Stephen23 le 8 Août 2016
so i'm having trouble trying to eliminate repetitions from my arrays. i've been using unique but can't have the first instance of the element in the return. for example:
A = 1,2,2,2,3,3,3,4,5; B = unique(A); B = 1,2,3,4,5
what i'm actually looking for is B = 1,4,5 where even the first instance of repeating elements is taken out. is this possible?
Thanks
  2 commentaires
Declan Bourke
Declan Bourke le 8 Août 2016
Hi,
And could i ask quickly, is there any way to do the same with an array of strings? e.g. (AA,AB,AC,AA,AD). I've tried everything I can think of.
Thanks,
Declan

Connectez-vous pour commenter.

Réponse acceptée

Stephen23
Stephen23 le 5 Août 2016
Modifié(e) : Stephen23 le 8 Août 2016
Assuming that the vector A is sorted:
>> A = [1,2,2,2,3,3,3,4,5];
>> B = unique(A);
>> B(histc(A,B)<2)
ans =
1 4 5
If A is not sorted, then this is a bit more complicated:
>> A = [3,3,3,5,1,4,2,2,2,2];
>> [B,X] = unique(A);
>> Y = histc(A,B)<2;
>> A(sort(X(Y))) % in original order
ans =
5 1 4
>> A(X(Y)) % sorted
ans =
1 4 5
  1 commentaire
Declan Bourke
Declan Bourke le 5 Août 2016
Thats a great help, thanks!

Connectez-vous pour commenter.

Plus de réponses (2)

Azzi Abdelmalek
Azzi Abdelmalek le 5 Août 2016
A = [1,2,2,2,3,3,3,4,5]
b=unique(A,'stable')
c=hist(A,b)
B=b(c==1)
  2 commentaires
Declan Bourke
Declan Bourke le 5 Août 2016
Thanks for the help!
Stephen23
Stephen23 le 5 Août 2016
Modifié(e) : Stephen23 le 5 Août 2016
This does not work if A is not sorted into order:
>> A = [3,3,3,5,1,4,2,2,2,2];
>> b=unique(A,'stable');
>> c=hist(A,b)
Error using histc
Edge vector must be monotonically non-decreasing.
Error in hist (line 92)
nn = histc(y,edges,1);
Although beginners might think that the 'stable' makes a difference, this then provides a non-monotonic sequence to histc, which is not allowed.

Connectez-vous pour commenter.


Azzi Abdelmalek
Azzi Abdelmalek le 5 Août 2016
Modifié(e) : Azzi Abdelmalek le 5 Août 2016
[ii,jj,kk]=unique(A)
out=ii(accumarray(kk,1)==1)

Catégories

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

Community Treasure Hunt

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

Start Hunting!

Translated by